问题描述
假设我有枚举:
enum Foo {
Bar {baz: Option<Buzz> },}
struct Buzz {}
有没有办法匹配baz
是否为None
?
How to match struct fields in Rust? 似乎不起作用,因为 Rust 解释了
match foo {
Foo::Bar { baz: Buzz } => {
},Foo::Bar { baz: None } => {
}
}
baz: Bar
作为重命名。
解决方法
None
的反义词是 Some
:
let foo = Foo::Bar{ baz: None };
match foo {
Foo::Bar{ baz: Some(_) } => println!("Bar with some"),Foo::Bar{ baz: None } => println!("Bar with none"),}