AnyCompiler

Variables y Mutabilidad

En Rust, una variable declarada con let es inmutable por defecto — una vez que le das un valor, no puedes cambiarlo. Esto es deliberado: la mayoría de las variables en un programa bien escrito nunca necesitan cambiar, y que el compilador detecte una reasignación accidental es mucho mejor que descubrirla como un error más 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

La x de arriba no tiene mut, así que nunca puede ser reasignada — intentarlo sería un error de compilación. y se declara con let mut, lo que explícitamente la hace mutable.

Shadowing

Shadowing te permite declarar una nueva variable con el mismo nombre que una anterior, reemplazándola por completo — esto es diferente de la mutación: cada let spaces crea una variable completamente nueva, y puede incluso cambiar su tipo, algo que la mutación simple nunca podría hacer.

fn main() {
    let spaces = "   ";
    let spaces = spaces.len();
    println!("spaces = {}", spaces);
}
Output
spaces = 3

Siguiente: tipos básicos — los tipos escalares de Rust, y hasta dónde llega realmente la inferencia de tipos.

Practice Exercise

Declara una variable inmutable price: f64 = 9.99. Luego declara una variable mutable count: i32 = 1, increméntala en 1, e imprime price y count juntos usando println!("{} {}", price, count).