共用体
共用体は列挙型に似ていますが、アクティブ フィールドを自分でトラッキングする必要があります。
#[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
クレートのような安全なラッパーを使用することをおすすめします。