Uniones

Las uniones son como enums (enumeraciones), pero eres tú quien debe hacer el seguimiento del campo activo:

#[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 }); // ¡Comportamiento indefinido!
}
This slide should take about 5 minutes.

Las uniones raramente son necesarias en Rust, ya que se suele utilizar una enum. A veces se necesitan para interactuar con APIs de biblioteca C.

Si solo quieres reinterpretar los bytes como otro tipo, probablemente te interese std::mem::transmute o una envoltura segura, como el crate zerocopy.