enumkit 0.0.1

Convenient traits for working with enums.
Documentation
# enumkit

`enumkit` provides traits and utilities for working with enums that consist only of unit variants. 
It works hand-in-hand with its companion crate, [`enumkit_derive`](https://crates.io/crates/enumkit-derive), 
which provides `#[derive(EnumValues)]` and `#[derive(EnumMapping)]` proc macros.

---

## Features

- `EnumValues`: Automatically enumerate all variants of a unit enum.
- `EnumMapping<T>`: Efficiently associate values with enum variants using a static-sized array.
- `serde` (optional): Enables `Serialize` and `Deserialize` derives for mapping types.

---

## Usage

Add the crate to your `Cargo.toml`:

```toml
[dependencies]
enumkit = "<version>"
```

Then derive traits for your enum:

```rust
use enumkit::{EnumValues, EnumMapping};

#[derive(EnumValues, EnumMapping, Debug, Clone, Copy, PartialEq, Eq, Hash)]
enum State {
    Start,
    Middle,
    End,
}

fn main() {
    // EnumValues usage
    for variant in State::values() {
        println!("{:?}", variant);
    }

    // EnumMapping usage
    let mut map = StateMapping::new(|s| format!("{:?}", s));
    assert_eq!(map.get(State::Middle), "Middle");
}
```

---

## Feature Flags

- `serde`: Enables `Serialize` and `Deserialize` for mapping structs.

---

## License

MIT or Apache-2.0