Âmbito e Obscurecimento

Os vínculos de variável têm um âmbito, e são obrigados a viver num bloco. Um bloco é uma coleção de declarações fechadas por chavetas {}.

fn main() {
// Este vínculo vive na função principal
let long_lived_binding = 1;
// Isto é um bloco, e tem um âmbito mais pequeno do que a função principal
{
// Este vínculo apenas existe neste bloco
let short_lived_binding = 2;
println!("inner short: {}", short_lived_binding);
}
// Fim do bloco
// Erro! `short_lived_binding` não existe neste âmbito
println!("outer short: {}", short_lived_binding);
// FIXME ^ Comente esta linha
println!("outer long: {}", long_lived_binding);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Além disto, obscurecimento de variável é permitido.

fn main() {
let shadowed_binding = 1;
{
println!("before being shadowed: {}", shadowed_binding);
// Este vínculo *obscurece* aquela que está no exterior
let shadowed_binding = "abc";
println!("shadowed in inner block: {}", shadowed_binding);
}
println!("outside inner block: {}", shadowed_binding);
// Este vínculo *obscurece* o vínculo anterior
let shadowed_binding = 2;
println!("shadowed in outer block: {}", shadowed_binding);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX