我可以匹配所有具有相同值形状的枚举变体吗?

mil*_*lck 3 enums pattern-matching rust

我有一个枚举:

enum MyEnum {
    A(i32),
    B(i32),
    C,
    D,
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我可以匹配A,并B与像这样同时:

let a = MyEnum::A(1);
match a {
    _(n) => { // do something for all variants which have one i32 value
    }
    _ => { // ignore the rest
    }
};
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?我是否必须匹配所有变体并为每个变体应用相同的“主体”?

She*_*ter 9

不,您想要的语法是不可能的;如果您有多种类型但数量相同,我什至不知道您的语法如何工作:

enum MyEnum {
    A(bool),
    B(String),
}
Run Code Online (Sandbox Code Playgroud)

我是否必须匹配所有变体并为每个变体应用相同的“主体”?

是的,但您可以使用模式在单个匹配臂中匹配它们:

enum MyEnum {
    A(bool),
    B(String),
}
Run Code Online (Sandbox Code Playgroud)