Rust derive-macro that simplifies integral enum creation
```rust use integral_enum::IntegralEnum;
/// Simple meaningful enum /// (!) repr attribute is required /// and can contain only integral values /// like u8, u16, u32, u64, u128 and its signed equivalent
pub enum Emotion { // Explicit discriminant is required Pain = 0, Hatred = 1, }
// Test it asserteq!(Emotion::tryfrom(0), Ok(Emotion::Pain)); asserteq!(Emotion::tryfrom(1), Ok(Emotion::Hatred)); asserteq!(Emotion::tryfrom(123), Err(())); ```
Macro will automatically generate the following trait implementations: TryFrom, Clone, Copy, PartialEq, Eq, Display, Debug
if you want to remove certain trait implementation, then pass one of the following attributes to the macro:
#[no_debug], #[no_display], #[no_copy], #[no_total_eq], #[no_clone]
Copy
depends on Clone
, so if you disable
Clone
generation, Copy
generation will be disabled also.no_total_eq
disables Eq
trait implementationExample:
```rust use integral_enum::IntegralEnum;
pub enum Emotion { // Explicit discriminant is required Pain = 0, Hatred = 1, }
println!("{}", Emotion::Pain); // Compile error ```
PartialOrd + Ord
also?