Unions

유니온 타입은 열거형(enum)과 비슷하지만, 어떤 필드에 해당하는 값을 가지고 있는지 여부를 프로그래머가 수동으로 추적해야 합니다:

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

fn main() {
    let u = MyUnion { i: 42 };
    println!("int: {}", unsafe { u.i });
    println!("부울: {}", unsafe { u.b }); // Undefined behavior!
}
This slide should take about 5 minutes.

러스트에는 열거형이 있기 때문에 유니온이 필요한 경우는 극히 드뭅니다. 유니온은 C 라이브러리 API를 사용할 때 가끔 필요합니다.

바이트들을 특정 타입으로 재해석 하고 싶다면 std::mem::transmute나 좀 더 안전한 zerocopy 크레이트를 사용하세요.