Variáveis e Mutabilidade
Em Rust, uma variável declarada com let é imutável por padrão — uma vez que você dá um valor a ela, não pode mudá-lo. Isso é deliberado: a maioria das variáveis em um programa bem escrito nunca precisa mudar, e o compilador detectar uma reatribuição acidental é muito melhor do que descobri-la como um bug mais tarde.
fn main() {
let x = 5;
println!("x = {}", x);
let mut y = 10;
println!("y = {}", y);
y = 20;
println!("y = {}", y);
}x = 5 y = 10 y = 20
O x acima não tem mut, então ele nunca pode ser reatribuído — tentar seria um erro de compilação. y é declarado com let mut, que explicitamente o torna mutável.
Shadowing
Shadowing permite declarar uma nova variável com o mesmo nome de uma anterior, substituindo-a completamente — isso é diferente de mutação: cada let spaces cria uma variável inteiramente nova, e pode até mudar seu tipo, algo que a mutação simples nunca poderia fazer.
fn main() {
let spaces = " ";
let spaces = spaces.len();
println!("spaces = {}", spaces);
}spaces = 3
Próximo: tipos básicos — os tipos escalares do Rust, e até onde a inferência de tipos realmente vai.
Practice Exercise
Declare uma variável imutável price: f64 = 9.99. Depois declare uma variável mutável count: i32 = 1, aumente-a em 1, e imprima price e count juntos usando println!("{} {}", price, count).