Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums 我可以匹配所有具有相同值形状的枚举变量吗?_Enums_Rust_Pattern Matching - Fatal编程技术网

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?