1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年11月24日 |
---|
#194 in #fields
在 e_num 中使用
8KB
220 行
e_num
将枚举序列化为数字。
警告
此库通过位操作将包含值的数字表示方式左移,以便将标记适当地放在数字的右侧,与具有变体字段(例如 Variant1(u64)
)的字段一起工作。如果字段中的数字非常大或变体非常多,则值左侧的数据可能会丢失。
用法
#[macro_use]
extern crate e_num;
use e_num::ENum;
#[derive(ENum)]
enum A {
B,
C(u64),
}
fn main() {
let b: usize = A::B.to_num();
println!("b as a number: {:#b}", b);
let b = A::from_num(b);
assert!(match b {
A::B => true,
_ => false,
});
let c = A::C(85).to_num();
println!("c as a number: {:#b}", c);
let c = A::from_num(c);
assert!(match c {
A::C(inner) => {
assert_eq!(inner, 85);
true
}
_ => false,
});
}
许可证
本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。
依赖项
~2.5MB
~54K SLoC