Function std::mem::discriminant1.21.0 (const: unstable)[][src]

pub fn discriminant<T>(v: &T) -> Discriminant<T>
Expand description

返回一个唯一标识 v 中的枚举变体的值。

如果 T 不是枚举,则调用此函数不会导致未定义的行为,但返回值是未指定的。

Stability

如果枚举定义改变,则枚举变体的判别式可能会改变。 某些变体的判别式在使用相同编译器的编译之间不会改变。

Examples

这可以用来比较携带数据的枚举,而忽略实际数据:

use std::mem;

enum Foo { A(&'static str), B(i32), C(i32) }

assert_eq!(mem::discriminant(&Foo::A("bar")), mem::discriminant(&Foo::A("baz")));
assert_eq!(mem::discriminant(&Foo::B(1)), mem::discriminant(&Foo::B(2)));
assert_ne!(mem::discriminant(&Foo::B(3)), mem::discriminant(&Foo::C(3)));
Run