MaybeUninit

MaybeUninit<T> を使うと、Rust で未初期化メモリを扱えます。

// 著作権 2026 Google LLC
// SPDX-License-Identifier: Apache-2.0

use std::mem::MaybeUninit;

fn main() {
    let uninit = MaybeUninit::<&i32>::uninit();
    println!("{uninit:?}");
}

「安全な Rust では、未初期化の可能性があるデータを参照することはできません」

「しかし、すべてのデータは未初期化の状態でプログラムに入ってきます。」

「したがって、メモリがその状態を遷移できるようにするための橋渡しが型システムに 必要です。MaybeUninit<T> がその型です。」

MaybeUninit<T>Option<T> 型と非常によく似ていますが、その セマンティクスは大きく異なります。MaybeUninit<T> における Option::None に相当するものは未初期化メモリであり、これは書き込みだけが安全です。」

「未初期化である可能性のあるメモリから読み取るのは、極めて危険です。」