Inferência

O motor da inferência de tipo é muito inteligente. Ele faz mais do que olhar o tipo da expressão do valor durante uma inicialização. Ele também olha em como a variável é usado mais tarde para inferir o seu tipo. Cá está um exemplo avançado da inferência de tipo:

fn main() {
// Por causa da anotação, o compilador sabe que `elem` tem o tipo u8.
let elem = 5u8;
// Criar um vetor vazio (uma tabela que cresce).
let mut vec = Vec::new();
// Neste momento o compilador não sabe o tipo exato de `vec`,
// apenas sabe que é um vetor de alguma coisa (`Vec<_>`).
// Inserir `elem` no vetor.
vec.push(elem);
// Aha! Agora o compilador sabe que `vec` é um vetor de `u8` (`Vec<u8>`)
// TODO ^ Tente comentar a linha `vec.push(elem)`
println!("{:?}", vec);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Nenhuma anotação de tipo de variáveis foi necessária, o compilador está feliz e consequentemente o programador!