Menu
Coddy logo textTech

Sombreado - Parte 2

Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 48 de 75.

Cuando sombreas una variable en Rust, la nueva variable es completamente independiente de la original y necesita su propia declaración de mutabilidad. El sombreado no hereda la mutabilidad de la variable original.

let mut mut_val = 7;
// La variable original es mutable
{ 
    let mut_val = 8;
    // Esta es una nueva variable que sombrea la mut_val externa
      
    mut_val = 50;
    // Ocurrió un error porque
    // mut_val no es mutable
}
// Aquí está bien 
// mut_val no está congelada en este ámbito
mut_val = 3;

Para solucionarlo, podemos añadir mut en el ámbito interno:

{
	let mut mut_val = 8;
	mut_val = 50;
}
challenge icon

Desafío

Principiante

Corrige el código dado para que se ejecute sin errores.

Hoja de referencia

Al sombrear (shadowing) una variable en Rust, la nueva variable es completamente independiente y necesita su propia declaración de mutabilidad. El sombreado no hereda la mutabilidad de la variable original.

let mut mut_val = 7;
// La variable original es mutable
{ 
    let mut_val = 8;
    // Esto sombrea el mut_val exterior pero es inmutable
      
    mut_val = 50;
    // Error: mut_val no es mutable en este ámbito
}

Para solucionar esto, añade mut a la variable que realiza el sombreado:

{
    let mut mut_val = 8;
    mut_val = 50; // Ahora esto funciona
}

Pruébalo tú mismo

fn main() {
    // Corrige este código para que funcione
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // Esto causará un error
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals