如何传递枚举变体以作为函数参数进行匹配?

How do I pass an enum variant to match on as a function parameter?

我想在参数中传递我需要匹配的枚举的哪个部分,如下所示:

enum D {
    A(i64),
    B(u64),
    C(u64, u64),
}
let a = D.A(10);
println!(a.is_of(D.A)); // true
println!(a.is_of(D.B)); // false

我知道我可以为此使用匹配规则,但我希望将此 is_of 方法作为我的枚举选项的输入。

你不能。

  • 无法将类型作为函数参数传递。
  • 枚举变体不是类型的开头。

如果您可以使用宏而不是函数,请参阅

另请参阅:

  • Can traits be used on enum types?