AnyCompiler

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);
}
Output
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);
}
Output
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).