我想传入参数,我需要匹配枚举的哪个分支,类似于这样:
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方法作为枚举选项的输入。
is_of
wi3ka0sx1#
你不能。
如果可以使用宏而不是函数,请参见
参见:
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
2条答案
按热度按时间wi3ka0sx1#
你不能。
如果可以使用宏而不是函数,请参见
参见:
n3schb8v2#
枚举变量的判别式可以传递用于比较
Rust Playground