Об'єднання

Об’єднання подібні до переліків, але вам потрібно самостійно відстежувати активне поле:

#[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, оскільки зазвичай можна використовувати перелік. Іноді вони потрібні для взаємодії з API бібліотек C.

Якщо ви просто хочете по-новому інтерпретувати байти як інший тип, вам, мабуть, знадобиться std::mem::transmute або безпечна оболонка, як-от крейт zerocopy.