变量绑定有一个范围,并且被约束在一个块中。块是语句的集合括在大括号 {}
内,所以, 变量阴影 是被允许的。
fn main() { |
// This binding lives in the main function |
let long_lived_binding = 1; |
// This is a block, and has a smaller scope than the main function |
{ |
// This binding only exists in this block |
let short_lived_binding = 2; |
println!("inner short: {}", short_lived_binding); |
// This binding *shadows* the outer one |
let long_lived_binding = 5_f32; |
println!("inner long: {}", long_lived_binding); |
} |
// End of the block |
// Error! `short_lived_binding` doesn't exist in this scope |
println!("outer short: {}", short_lived_binding); |
// FIXME ^ Comment out this line |
println!("outer long: {}", long_lived_binding); |
} |