rust 如何将枚举变量作为函数参数进行匹配?

juzqafwq  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(115)

我想传入参数,我需要匹配枚举的哪个分支,类似于这样:

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方法作为枚举选项的输入。

n3schb8v

n3schb8v2#

枚举变量的判别式可以传递用于比较

use std::mem::{discriminant,Discriminant};

enum MyEnum {
  A,
  B,
}

fn is_enum_variant(value: &MyEnum, d: Discriminant<MyEnum>) -> bool {
  discriminant(value) == d
}

fn main() {
  println!("Is variant: {}", is_enum_variant(&MyEnum::A, discriminant(&MyEnum::A)));
  println!("Is variant: {}", is_enum_variant(&MyEnum::A, discriminant(&MyEnum::B)));
}

Rust Playground

相关问题