enumkit 0.0.1

Convenient traits for working with enums.
Documentation
use crate::{EnumMapping, EnumValues};
use serde::{Deserialize, Serialize};
use serde_json;

#[derive(PartialEq, Eq, Debug, EnumValues, EnumMapping)]
enum TestEnum {
    A,
    B,
    C
}

#[test]
fn len_test_1() {
    assert_eq!(TestEnum::len(), 3);
    assert_eq!(TestEnum::values().collect::<Vec<_>>(), vec![TestEnum::A, TestEnum::B, TestEnum::C]);
}

#[test]
fn mapping_test_1() {
    let map_1 = TestEnumMapping::new(|e| 1);
    for v in TestEnum::values() {
        assert_eq!(*map_1.get(v), 1);
    }
}

#[test]
fn test_serialize_deserialize_1() {
    let map_1 = TestEnumMapping::new(|e| 1);
    let serialized = serde_json::to_string(&map_1).unwrap();
    let deserialized: TestEnumMapping<i32> = serde_json::from_str(&serialized).unwrap();

    for v in TestEnum::values() {
        assert_eq!(*deserialized.get(v), 1);
    }
}