P.UNS.UNI.01 除了与 C 交互,尽量不要使用 Union

【描述】

Rust 支持 Union 就是为了调用 C 接口。如果不是 FFi ,就避免使用 Union。

一般情况下请使用 枚举 或 结构体代替。

使用 Copy 类型的值和 ManuallyDrop 来初始化 Union 的变体,不需要使用 Unsafe 块。

【反例】


#![allow(unused)]
fn main() {
union MyUnion {
    f1: u32,
    f2: f32,
}
}

【正例】


#![allow(unused)]
fn main() {
#[repr(C)]
union MyUnion {
    f1: u32,
    f2: f32,
}
}