共用体

在 Rust 中,**共用体(union)**的概念是通过 union 关键字实现的。共用体允许在同一内存位置存储不同类型的数据,但同时只能安全地使用其中一种类型。

基本语法

union MyUnion {
    i: i32,
    f: f32,
}

特点

  1. 不安全性:与结构体不同,访问共用体中的字段需要使用 unsafe 块,因为编译器无法保证你访问的字段类型是正确的。

  2. 大小:共用体的大小取决于其最大字段的大小,确保能够容纳任何一个字段。

  3. 使用示例

union MyUnion {
    i: i32,
    f: f32,
}

fn main() {
    let u = MyUnion { i: 10 };

    unsafe {
        println!("i: {}", u.i); // 正确访问
        // println!("f: {}", u.f); // 访问未初始化字段会导致未定义行为
    }
}

注意事项

  • 使用共用体时,务必确保访问的是正确的字段,以避免未定义行为。

  • 共用体在 Rust 中不如结构体常用,因为 Rust 强调安全性和类型安全,通常推荐使用 enum 来实现类似功能,enum 提供了更安全的类型检查。

总的来说,Rust 中确实有共用体的概念,但使用时需谨慎。

Last updated