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