Tuplas e Matrizes
Tuplas e matrizes sĂŁo os primeiros tipos âcompostosâ que vimos. Todos os elementos de uma matriz tĂȘm o mesmo tipo, enquanto as tuplas podem acomodar diferentes tipos. Ambos os tipos tĂȘm um tamanho fixo em tempo de compilação.
Tipos | Literais | |
---|---|---|
Matrizes | [T; N] | [20, 30, 40] , [0; 3] |
Tuplas | () , (T,) , (T1, T2) , ⊠| () , ('x',) , ('x', 1.2) , ⊠|
Atribuição e acesso a matrizes:
fn main() { let mut a: [i8; 10] = [42; 10]; a[5] = 0; println!("a: {a:?}"); }
Atribuição e acesso a tuplas:
fn main() { let t: (i8, bool) = (7, true); println!("t.0: {}", t.0); println!("t.1: {}", t.1); }
Pontos chave:
Matrizes:
-
O valor do tipo matriz
[T; N]
comportaN
elementos (constante em tempo de compilação) do mesmo tipoN
. Note que o tamanho de uma matriz Ă© parte do seu tipo, o que significa que[u8; 3]
e[u8; 4]
sĂŁo considerados dois tipos diferentes. Slices (fatias), que tĂȘm um tamanho determinado em tempo de execução, sĂŁo abordados mais tarde. -
Tente acessar um elemento de matriz fora dos limites. Os acessos a matrizes são verificados em tempo de execução. Rust geralmente pode otimizar essas verificaçÔes e elas podem ser evitadas usando Rust inseguro.
-
NĂłs podemos usar literais para atribuir valores para matrizes.
-
A macro
println!
pede a implementação de depuração com o parùmetro de formato?
:{}
dĂĄ a saĂda padrĂŁo,{:?}
dĂĄ a saĂda de depuração. Tipos como inteiros e strings implementam a saĂda padrĂŁo, mas matrizes implementam apenas a saĂda de depuração. Isso significa que devemos usar a saĂda de depuração aqui. -
Adicionando
#
, p.ex.{a:#?}
, invoca um formato âpretty printingâ (âimpressĂŁo bonitaâ), que pode ser mais legĂvel.
Tuplas:
-
Assim como matrizes, tuplas tĂȘm tamanho fixo.
-
Tuplas agrupam valores de diferentes tipos em um tipo composto.
-
Campos de uma tupla podem ser acessados com um ponto e o Ăndice do valor, p.ex.
t.0
,t.1
. -
A tupla vazia
()
tambĂ©m Ă© conhecida como âtipo unidadeâ (unit type). Ă tanto um tipo quanto o Ășnico valor vĂĄlido desse tipo - ou seja, o tipo e seu valor sĂŁo expressos como()
. Ă usado para indicar, por exemplo, que uma função ou expressĂŁo nĂŁo tem valor de retorno, como veremos em um slide futuro.- VocĂȘ pode pensar nisso como um
void
, que talvez lhe seja familiar de outras linguagens de programação.
- VocĂȘ pode pensar nisso como um