如何将Rust bitflags枚举项转换为整数类型?
将bitflags定义的枚举项转为整数的方法
对于你用bitflags!宏定义的结构体,有两种简单方式可以将枚举项转为底层的整数类型(比如示例里的u8):
方法1:使用bits()方法
bitflags库会自动为生成的结构体实现bits()方法,直接调用就能获取对应枚举项的底层整数值:
bitflags! { struct Flags: u8 { const NONE = 1; const SOME = 2; } } fn main() { // 直接和整数比较 assert!(Flags::SOME.bits() == 2); }
方法2:利用Into trait转换
bitflags生成的结构体默认实现了Into<底层整数类型> trait,你可以通过类型推导或显式转换得到整数:
fn main() { // 显式转换为u8类型 let some_u8: u8 = Flags::SOME.into(); assert_eq!(some_u8, 2); }
这两种方法都能满足和整数比较的需求,其中bits()方法更直观,专门用于获取底层位值;Into转换则符合Rust通用的类型转换习惯。
内容的提问来源于stack exchange,提问作者Sayantan Ghosh
相关产品推荐
相关产品推荐

