Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 获取枚举的基础变量_Rust - Fatal编程技术网

Rust 获取枚举的基础变量

Rust 获取枚举的基础变量,rust,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的基础变量,该变量可以是u32、String或i32。是否仅通过模式匹配?模式匹配不限于match

我的简化代码:

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
。是否仅通过模式匹配?

模式匹配不限于
match
。若您只关心一种类型的变体,您也可以这样做

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

只有当
my_struct1.my_enum
的值实际上是
MyEnum::B
类型时,才会运行
println
行。Rust
enum
是安全的。它不像C
union
,无论值实际是哪种类型,您都可以根据自己的意愿不安全地访问基础值。

如果它们都具有相同的基础类型,比如像A一样的u32,那么如何获取该变量?@OskarK。然后您需要使用
match
让v=match my_struct1.my_enum{MyEnum::A(A)=>A,MyEnum::B(B)=>B,MyEnum::C(C)=>C}。涵盖以下主题:、和。