6 个版本
0.1.5 | 2023 年 9 月 6 日 |
---|---|
0.1.4 | 2023 年 9 月 4 日 |
0.1.2 | 2023 年 7 月 16 日 |
1979 在 过程宏 中
每月下载 21 次
在 4 个库中使用 (通过 dnspod-lib)
8KB
121 行
literal-enum
自动为枚举实现 TryFrom<Literal>
特性和 Into<Literal>
特性,其中字面量必须为相同的类型(以下类型之一:[&'static str
,&'static [u8]
,u8
,char
,u32
,bool
])
如果您需要转换其他整数类型(i8、i16、u16、i32、i64、u64、i128、u128),可以使用 intype-enum
使用示例
use literal_enum::LiteralEnum;
#[derive(LiteralEnum)]
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
enum Command {
/// increment pointer
#[lit = b'>']
IncrementPointer,
/// decrement pointer
#[lit = b'<']
DecrementPointer,
}
assert_eq!(Command::try_from(b'>').unwrap(), Command::IncrementPointer);
let b: u8 = Command::IncrementPointer.into();
assert_eq!(b, b'>');
#[derive(LiteralEnum)]
enum E {
A,
AAAA,
}
let s: &'static str = E::A.into();
assert_eq!(s, "A");
依赖项
~260–700KB
~17K SLoC