本文簡要介紹rust語言中 Function core::mem::discriminant
的用法。
用法
pub fn discriminant<T>(v: &T) -> Discriminant<T>
返回唯一標識 v
中的枚舉變量的值。
如果T
不是枚舉,調用此函數不會導致未定義的行為,但返回值未指定。
穩定
如果枚舉定義發生變化,枚舉變體的判別式可能會發生變化。某些變體的判別式在使用相同編譯器的編譯之間不會改變。
例子
這可用於比較攜帶數據的枚舉,而忽略實際數據:
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)));
相關用法
- Rust drop_in_place用法及代碼示例
- Rust debug_assert用法及代碼示例
- Rust drop用法及代碼示例
- Rust default用法及代碼示例
- Rust decode_utf16用法及代碼示例
- Rust debug_assert_eq用法及代碼示例
- Rust debug_assert_ne用法及代碼示例
- Rust debug_assert_matches用法及代碼示例
- Rust dbg用法及代碼示例
- Rust UdpSocket.set_multicast_loop_v6用法及代碼示例
- Rust i64.overflowing_add_unsigned用法及代碼示例
- Rust Box.downcast用法及代碼示例
- Rust BTreeMap.last_key_value用法及代碼示例
- Rust str.make_ascii_uppercase用法及代碼示例
- Rust u128.checked_pow用法及代碼示例
- Rust usize.wrapping_mul用法及代碼示例
- Rust AtomicU8.fetch_sub用法及代碼示例
- Rust PanicInfo.payload用法及代碼示例
- Rust MaybeUninit.assume_init_mut用法及代碼示例
- Rust String.try_reserve用法及代碼示例
- Rust Mutex.new用法及代碼示例
- Rust f32.exp用法及代碼示例
- Rust Result.unwrap_or_else用法及代碼示例
- Rust slice.sort_unstable_by_key用法及代碼示例
- Rust Formatter.precision用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function core::mem::discriminant。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。