Matrizes

fn main() {
    let mut a: [i8; 10] = [42; 10];
    a[5] = 0;
    println!("a: {a:?}");
}
This slide should take about 5 minutes.
  • O valor do tipo matriz [T; N] comporta N elementos (constante em tempo de compilação) do mesmo tipo N. 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", que pode ser mais legível.