我的简化代码:
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
的基础变量,该变量可以是u32
,String
或i32
。它只是通过模式匹配吗?
答案 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
不同,您可以根据需要不安全地访问基础值,无论该值实际是哪种类型。