enumkit 0.0.1

Convenient traits for working with enums.
Documentation
#[cfg(test)]
mod test;

pub use enumkit_derive::{EnumValues, EnumMapping};

pub trait EnumValues {
    type Enum;
    fn values() -> impl Iterator<Item=Self::Enum>;
    fn len() -> usize;
}

pub trait EnumMapping<T> {
    type Enum;
    type EnumIter<'a>: Iterator<Item=(Self::Enum, &'a T)>
    where
        T: 'a,
        Self: 'a;
    fn get(&self, var: Self::Enum) -> &T;
    fn get_mut(&mut self, var: Self::Enum) -> &mut T;
    fn put(&mut self, var: Self::Enum, val: T);
    fn new<F: FnMut(Self::Enum) -> T>(f: F) -> Self;
    fn iter(&self) -> Self::EnumIter<'_>;
}