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

aso*_*sky 1 enums matching rust

我想将需要匹配的枚举的参数传递给参数,如下所示:

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

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

She*_*ter 7

你不能。

  • 不能将类型作为函数参数传递。
  • 枚举变量不是开始的类型。

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

也可以看看:

  • 伙计..我仍然不知道为什么枚举不能作为 Rust 中的参数传递。这确实是违反直觉的。 (2认同)