6个稳定版本
1.1.1 | 2022年1月12日 |
---|---|
1.0.3 | 2020年4月9日 |
1.0.2 | 2020年4月8日 |
1.0.1 | 2020年2月27日 |
#102 in #enum
每月 24 次下载
在 2 个crate中使用 (通过 basin2-data)
16KB
143 代码行
Cenum
目的
Cenum (C + Enum) 是一个小的Rust crate,它是 enum_primitive
crate的精神继承者。它通过给定的枚举使用属性宏,允许从无字段的枚举(允许有区别)到 usize
以及反向的低成本转换。
用法
use cenum::{ cenum, Cenum }; // exposed trait is Cenum
#[cenum]
enum MyEnum {
Value0,
Value1,
Value7 = 7,
Value8,
Value9,
}
fn test() {
let some_value = MyEnum::Value8;
let serialized = some_value.to_primitive(); // to_u32/other primitive types also works
let is_value_discriminant = MyEnum::is_discriminant(serialized);
let deserialized = MyEnum::from_primitive(serialized); // panics if invalid value
assert!(is_value_discriminant);
assert_eq!(some_value, deserialized);
assert_eq!(serialized, 8);
}
依赖
~1.5MB
~36K SLoC