| Crates.io | enumkit |
| lib.rs | enumkit |
| version | 0.0.1 |
| created_at | 2025-07-08 20:45:05.878513+00 |
| updated_at | 2025-07-09 19:47:19.403264+00 |
| description | Convenient traits for working with enums. |
| homepage | https://github.com/veggiebob/enumkit |
| repository | https://github.com/veggiebob/enumkit |
| max_upload_size | |
| id | 1743551 |
| size | 7,873 |
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,
which provides #[derive(EnumValues)] and #[derive(EnumMapping)] proc macros.
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.Add the crate to your Cargo.toml:
[dependencies]
enumkit = "<version>"
Then derive traits for your enum:
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");
}
serde: Enables Serialize and Deserialize for mapping structs.MIT or Apache-2.0