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;
}Desafío
PrincipianteCorrige 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);
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica