#enums #byte #repr #u8 #macro-derive #explicit #byte-enum

已撤回 byte-enum-derive

为byte-enum实现过程宏

0.1.2 2022年5月24日
0.1.1 2022年5月24日
0.1.0 2022年5月24日

#30 in #explicit


用于 byte-enum

MIT/Apache

7KB
145

byte-enum

一个ByteEnum derive宏和trait,用于为Into<u8>TryFrom<u8>实现#[repr(u8)]枚举。简单明了。

枚举必须是#[repr(u8)],无字段,且不得有显式区分符。


use byte_enum::ByteEnum;

#[derive(ByteEnum)]
#[repr(u8)]
enum SomeEnum {
    VariantA,
    VariantB,
    VariantC,
}

let b: u8 = SomeEnum::VariantB.into();
assert_eq!(b, 1);
 
let c = SomeEnum::try_from(2_u8);
assert_eq!(c, Ok(SomeEnum::VariantC));
 
let d = SomeEnum::try_from(4_u8);
assert!(d.is_err());

许可证

你可以选择Apache 2或MIT许可证来使用byte-enum。

依赖关系

~1.5MB
~36K SLoC