Zhi Enum

Easily create casting traits with unknown field support.

Usage

  1. Add EnumConvert or EnumTryConvert into the derive attribute.

```rust use zhi_enum::{EnumConvert, EnumTryConvert};

[derive(Debug, Ord, PartialOrd, Eq, PartialEq, EnumConvert)]

[repr(u8)]

enum NumberConvert { Zero, One, Two, Three, Four, Ten = 10, Eleven, Twenty = 10 + 10, TwentyOne, #[zhi_enum(unknown)] Unknown(u8), }

[derive(Debug, Ord, PartialOrd, Eq, PartialEq, EnumTryConvert)]

[repr(u8)]

enum NumberTryConvert { Zero, One, Two, Three, Four, Ten = 10, Eleven, Twenty = 10 + 10, TwentyOne, #[zhi_enum(unknown)] Unknown(u8), }

```

  1. Then, you can use .from/.into convert functions

```rust asserteq!(NumberConvert::Three.intou8(), 3u8); asserteq!(NumberTryConvert::Three.tryintou8().unwrap(), 3u8); asserteq!(NumberConvert::Ten.intou8(), 10u8); asserteq!(NumberTryConvert::Ten.tryintou8().unwrap(), 10u8); asserteq!(NumberConvert::Eleven.intou8(), 11u8); asserteq!(NumberTryConvert::Eleven.tryintou8().unwrap(), 11u8); asserteq!(NumberConvert::TwentyOne.intou8(), 21u8); asserteq!(NumberTryConvert::TwentyOne.tryintou8().unwrap(), 21u8);

asserteq!(NumberConvert::from(3u8), NumberConvert::Three); asserteq!(NumberTryConvert::try_from(21u8).unwrap(), NumberTryConvert::TwentyOne) ```

Handle unknown discriminant

FAQ

License

BSD-3-Clause