static

静的変数はプログラムの実行全体を通じて存続するため、移動しません。

static BANNER: &str = "Welcome to RustOS 3.14";

fn main() {
    println!("{BANNER}");
}

Rust RFC Book で説明されているように、静的変数は使用時にインライン化されず、実際の関連するメモリ位置に存在します。これは安全でないコードや埋め込みコードに有用であり、変数はプログラムの実行全体を通じて存続します。グローバル スコープの値にオブジェクト ID が必要ない場合は、一般的に const が使用されます。

This slide should take about 5 minutes.
  • static is similar to mutable global variables in C++.
  • static はオブジェクト ID(メモリ内のアドレス)と、内部可変性を持つ型に必要な状態(Mutex<T> など)を提供します。

その他

static 変数はどのスレッドからでもアクセスできるため、Sync である必要があります。内部の可変性は、Mutex やアトミックなどの方法で実現できます。

マクロ std::thread_local を使用して、スレッド ローカルのデータを作成できます。