我有一个枚举:
#[derive(PartialEq, Eq)]
enum Foo {
A,
B(usize),
}
我可以用它if
涉及其他逻辑的语句,例如baz
:
fn bar(foo: &Foo, baz: bool) {
if foo == &Foo::B(3) || baz {
println!("Do stuff")
}
}
但是,这不会编译:
fn bar(foo: &Foo, baz: bool) {
if foo == &Foo::B(_) || baz {
println!("Do stuff")
}
}
我如何在if
当我不在乎什么价值时的声明B
包含?
使用a可能更容易match
在这种情况下:
fn do_stuff() {
println!("Do stuff")
}
fn bar(foo: &Foo, baz: bool) {
match foo {
&Foo::B(_) => do_stuff(),
_ => {
if baz {
do_stuff();
}
}
}
}
或者使用if let
:
fn bar(foo: &Foo, baz: bool) {
if let &Foo::B(_) = foo {
do_stuff();
} else {
if baz {
do_stuff();
}
}
}
我不确定您是否可以轻松地将所有内容合并到一个条件中,这会让您重复do_stuff
很遗憾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)