Menu
Coddy logo textTech

Shadowing Parte 2

Parte da seção Fundamentals do Journey de Rust da Coddy — lição 48 de 75.

Quando você faz o shadowing de uma variável em Rust, a nova variável é completamente independente da original e precisa de sua própria declaração de mutabilidade. O shadowing não herda a mutabilidade da variável original.

let mut mut_val = 7;
// A variável original é mutável
{ 
    let mut_val = 8;
    // Esta é uma nova variável que sombreia a mut_val externa
      
    mut_val = 50;
    // Ocorreu um erro porque
    // mut_val não é mutável
}
// Aqui está tudo bem 
// mut_val não está congelada neste escopo
mut_val = 3;

Para corrigir isso, podemos adicionar mut no escopo interno:

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

Desafio

Iniciante

Corrija o código fornecido para que ele seja executado sem erros.

Folha de consulta

Ao realizar o shadowing de uma variável em Rust, a nova variável é completamente independente e precisa de sua própria declaração de mutabilidade. O shadowing não herda a mutabilidade da variável original.

let mut mut_val = 7;
// A variável original é mutável
{ 
    let mut_val = 8;
    // Isso faz o shadowing do mut_val externo, mas é imutável
      
    mut_val = 50;
    // Erro: mut_val não é mutável neste escopo
}

Para corrigir isso, adicione mut à variável que está fazendo o shadowing:

{
    let mut mut_val = 8;
    mut_val = 50; // Agora isso funciona
}

Experimente você mesmo

fn main() {
    // Corrija este código para fazê-lo funcionar
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // Isso causará um erro
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentals