Enums 我可以匹配所有具有相同值形状的枚举变量吗?
我有一个枚举:Enums 我可以匹配所有具有相同值形状的枚举变量吗?,enums,rust,pattern-matching,Enums,Rust,Pattern Matching,我有一个枚举: enum MyEnum{ A(i32), B(i32), C D // ... } 我可以同时匹配A和B吗 a=MyEnum::a(1); 匹配{ _(n) =>{//对所有具有一个i32值的变量执行某些操作 } _=>{//忽略其余部分 } }; 有没有办法做到这一点?我是否必须匹配所有变体并为每个变体应用相同的“body”?不,您想要的语法是不可能的;如果您有多个类型,但计数相同,我甚至不知道您的语法如何工作: enum MyEnum { A(bool),
enum MyEnum{
A(i32),
B(i32),
C
D
// ...
}
我可以同时匹配A
和B
吗
a=MyEnum::a(1);
匹配{
_(n) =>{//对所有具有一个i32值的变量执行某些操作
}
_=>{//忽略其余部分
}
};
有没有办法做到这一点?我是否必须匹配所有变体并为每个变体应用相同的“body”?不,您想要的语法是不可能的;如果您有多个类型,但计数相同,我甚至不知道您的语法如何工作:
enum MyEnum {
A(bool),
B(String),
}
我是否必须匹配所有变体并为每个变体应用相同的“主体”
可以,但您可以使用模式在单个匹配臂中匹配它们:
匹配a{
MyEnum::A(n)| MyEnum::B(n)=>{
_ => {}
};
我希望rust的类型推断系统足够强大。但我想这会很好用的。你们可以创建一个宏来展开匹配语句并调用任意函数。比如:打开!(a,ref sm=>sm.f()。请看这个问题:如果您不关心实类型,为什么不合并A和B?