共用体

共用体は列挙型に似ていますが、アクティブ フィールドを自分でトラッキングする必要があります。

#[repr(C)]
union MyUnion {
    i: u8,
    b: bool,
}

fn main() {
    let u = MyUnion { i: 42 };
    println!("int: {}", unsafe { u.i });
    println!("bool: {}", unsafe { u.b }); // 未定義の動作
}
This slide should take about 5 minutes.

Rust では、通常は列挙型を使用できるため、共用体はほとんど必要ありません。共用体は、C ライブラリ API とのやり取りで必要になることがあります。

バイトを別の型として再解釈したい場合は、std::mem::transmute か、zerocopy クレートのような安全なラッパーを使用することをおすすめします。