#字面量 #枚举 #转换 #特性 #回退 #尝试 #从字面量尝试转换

literal-enum

将 [枚举] 转换为 [字面量],并尝试将其转换回

6 个版本

0.1.5 2023 年 9 月 6 日
0.1.4 2023 年 9 月 4 日
0.1.2 2023 年 7 月 16 日

1979过程宏

每月下载 21
4 个库中使用 (通过 dnspod-lib)

MIT 许可证

8KB
121

literal-enum

自动为枚举实现 TryFrom<Literal> 特性和 Into<Literal> 特性,其中字面量必须为相同的类型(以下类型之一:[&'static str&'static [u8]u8charu32bool])

如果您需要转换其他整数类型(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