ブロックとスコープ
- Rust のブロックには、波かっこ
{}で囲まれた一連の式が含まれます。 - ブロックの最後の式によって、ブロック全体の値と型が 決まります。
// Copyright 2023 Google LLC // SPDX-License-Identifier: Apache-2.0 fn main() { let z = 13; let x = { let y = 10; dbg!(y); z - y }; dbg!(x); // dbg!(y); }
最後の式が ; で終わる場合、結果の値と型は () になります。
変数のスコープは、それを囲むブロック内に限定されます。
-
dbg! は、手早いデバッグのために、与えられた式の値を出力して返す Rust マクロであると説明できます。
-
ブロック内の最後の行を変更すると、ブロックの値がどのように変わるかを 示せます。たとえば、セミコロンを追加/削除したり、
returnを使ったりする場合です。 -
スコープの外で
yにアクセスしようとするとコンパイルできないことを 実演できます。 -
値は、そのスタック上のデータがまだ残っていても、スコープを外れると 実質的に「解放」されます。