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);}
Nenhuma anotação de tipo de variáveis foi necessária, o compilador está feliz e consequentemente o programador!