我想在迭代器上应用 filter
,我想出了这个并且它有效,但它 super 冗长:
.filter(|ref my_struct| match my_struct.my_enum { Unknown => false, _ => true })
我宁愿这样写:
.filter(|ref my_struct| my_struct.my_enum != Unknown)
这给了我一个编译错误
binary operation `!=` cannot be applied to type `MyEnum`
是否有替代冗长模式匹配的方法?我在寻找宏,但找不到合适的宏。
最佳答案
使用matches!
,例如:
matches!(my_struct.my_enum, Unknown)
或者,您可以使用 PartialEq
特性,例如,通过 #[derive]
:
#[derive(PartialEq)]
enum MyEnum { ... }
然后您的“理想”变体将按原样工作。然而,这需要 MyEnum
的内容也实现 PartialEq
,这并不总是可能/想要的。
关于enums - 如何在没有模式匹配的情况下比较枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576748/