スコープとシャドーイング
変数束縛は、スコープを持ち、それはブロック内で有効です。ブロックは、
波括弧{}でくくられた文の集合のことです。さらに、変数のシャドーイング
も許可されています。
fn main() { // この束縛はmain関数内で有効です。 let long_lived_binding = 1; // これはブロックで、main関数より小さいスコープを持っています。 { // このブロック内でのみ有効。 let short_lived_binding = 2; println!("inner short: {}", short_lived_binding); // 外側の束縛を*覆い隠す*ことができます。 let long_lived_binding = 5_f32; println!("inner long: {}", long_lived_binding); } // ブロックの終わり // エラー! `short_lived_binding`はこのスコープに存在しません。 println!("outer short: {}", short_lived_binding); // FIXME ^ この行をコメントアウトしてください。 println!("outer long: {}", long_lived_binding); // この束縛も前の束縛を*覆い隠し*ます。 let long_lived_binding = 'a'; println!("outer long: {}", long_lived_binding); }