🎯 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ística | Shadowing (let) | Mutabilidade (mut) |
|---|---|---|
| Tipo de Dado | Pode ser alterado | Deve permanecer o mesmo |
| Re-declaração | Exige o uso de let | Apenas atribuição (=) |
| Estado Final | A variável pode voltar a ser imutável | A variável permanece mutável |
Vantagem do Shadowing
É ideal para transformações de dados onde você não quer criar nomes complexos como
espacos_streespacos_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íveis3. 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
- Atlas: MdC - Programação
- Notas Relacionadas: