| Crates.io | literal-enum |
| lib.rs | literal-enum |
| version | 0.1.6 |
| created_at | 2023-07-14 05:48:17.854617+00 |
| updated_at | 2024-09-01 07:52:32.862974+00 |
| description | Convert an [`enum`] to a [`literal`], and try to convert it back |
| homepage | |
| repository | https://github.com/hangj/literal-enum |
| max_upload_size | |
| id | 915864 |
| size | 12,177 |
Automatically implements the TryFrom<Literal> trait and Into<Literal> trait for an enum where the literals 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
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");