获取枚举的基础变量

时间:2016-05-05 04:53:56

标签: rust

我的简化代码:

enum MyEnum {
    A(u32),
    B(String),
    C(i32),
}

pub struct MyStruct {
    aa: String,
    bb: u16,
    my_enum: MyEnum,
}

let my_struct1 = MyStruct { /*...*/ };

如何获取my_struct1.my_enum的基础变量,该变量可以是u32Stringi32。它只是通过模式匹配吗?

1 个答案:

答案 0 :(得分:3)

模式匹配不仅限于match。如果您只关心一种变体,也可以

if let MyEnum::B(s) = my_struct1.my_enum {
    println!("{}", s);
}

仅当println的值实际为my_struct1.my_enum类型时,才会运行MyEnum::B行。 Rust enum是安全的。它与C union不同,您可以根据需要不安全地访问基础值,无论该值实际是哪种类型。