Function core::mem::discriminant1.21.0[][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