【发布时间】:2020-12-16 09:46:06
【问题描述】:
假设我定义和实例化一个枚举如下:
enum MyEnum {
EmptyVariant,
TupleVariant(u8),
StructVariant {
key: u8,
value: char,
}
}
let instance = MyEnum::StructVariant{key: 8, value: 'a'};
是否可以在不解构的情况下匹配此变体?例如,不要这样做:
if let MyEnum::StructVariant{key, value} = instance {
eprintln!("key, value = {}, {}", key, value);
}
我宁愿写这样的东西:
if let MyEnum::StructVariant{VARIANT_MEMBERS} = instance {
eprintln!("key, value = {}, {}", VARIANT_MEMBERS.key, VARIANT_MEMBERS.value);
}
在这个例子中,写出结构体变体的成员是良性的,但是在变体有很多成员的情况下,它会使代码难以阅读。
【问题讨论】:
-
请注意,您只需要匹配您实际使用的字段。您可以使用
..忽略其余部分。