🎯 Sombreamento no Rust

Em poucas palavras

O Sombreamento (Shadowing) é um recurso do Rust que permite declarar uma nova variável com o mesmo nome de uma variável anterior. A segunda variável “sombreia” a primeira, o que significa que o compilador passará a usar o segundo nome até que ele próprio seja sombreado ou o escopo termine.


📝 Notas e Desenvolvimento

1. Como Funciona

Diferente de apenas alterar o valor de uma variável mutável, o sombreamento cria uma nova variável usando a palavra-chave let.

fn main() {
    let x = 5;
    let x = x + 1; // A primeira variável x é sombreada pela nova declaração
    println!("O valor de x é: {x}"); // Resultado: 6
}

2. Shadowing Vs Mutabilidade (mut)

Existe uma diferença fundamental entre sombrear uma variável e marcá-la como mutável:

CaracterísticaShadowing (let)Mutabilidade (mut)
Tipo de DadoPode ser alteradoDeve permanecer o mesmo
Re-declaraçãoExige o uso de letApenas atribuição (=)
Estado FinalA variável pode voltar a ser imutávelA variável permanece mutável

Vantagem do Shadowing

É ideal para transformações de dados onde você não quer criar nomes complexos como espacos_str e espacos_int.

// Exemplo de mudança de tipo com Shadowing
let espacos = "   "; // Tipo: &str
let espacos = espacos.len(); // Tipo: usize (Válido!)
 
// Com mut, isso causaria erro:
// let mut espacos = "   ";
// espacos = espacos.len(); // ERRO: tipos incompatíveis

3. Comportamento de Escopo

O sombreamento respeita os blocos de código { }. Uma variável sombreada dentro de um escopo interno deixa de existir quando esse escopo termina.

fn main() {
    let x = 5;
    {
        let x = x * 2; // Sombreia o x externo apenas neste bloco
        println!("Valor no escopo interno: {x}"); // 10
    }
    println!("Valor no escopo externo: {x}"); // 5
}

🔗 Conexões e Contexto


📚 Referências e Fontes

📂 Outros Conteúdos Preservados

🔗 Conceitos Relacionados