ブロックとスコープ

  • 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 にアクセスしようとするとコンパイルできないことを 実演できます。

  • 値は、そのスタック上のデータがまだ残っていても、スコープを外れると 実質的に「解放」されます。