7 releases
0.1.6 | Sep 1, 2024 |
---|---|
0.1.5 | Sep 6, 2023 |
0.1.2 | Jul 16, 2023 |
#1479 in Procedural macros
30 downloads per month
Used in 4 crates
(via dnspod-lib)
10KB
150 lines
literal-enum
Automatically implements the TryFrom<Literal>
trait and Into<Literal>
trait for an enum
where the literal
s must be the same type(one of [&'static str
, &'static [u8]
, u8
, char
, u32
, bool
])
If you need to convert other interger type(i8, i16, u16, i32, i64, u64, i128, u128), you can use intype-enum
Usage Example
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'>');
use literal_enum::LiteralEnum;
#[derive(LiteralEnum)]
enum E {
A,
AAAA,
}
let s: &'static str = E::A.into();
assert_eq!(s, "A");
Dependencies
~205–640KB
~15K SLoC