variant-map

Enum variants stored in Maps.

Provides different kinds of map-equivalent types to store enum variants into. As those data structures are maps, they store one value of each variant. All Maps are serde::Serialize-able and serde::Deserialize-able

Those maps can be generated easily using the derive macros from variantmapderive. variantmapderive provides a derive macro for a StructMap (a struct type with a field per enum variant). variantmapderive can be included using the derive feature of variant_map

This crate also provide simple macros to lighten the syntax with the macros feature.

Example

``` use variantmapderive::VariantStore;

 #[derive(VariantStore)]
 enum MyEnum {
     A,
     B(i32),
 }

 fn main() {
     use variant_map::{as_key, as_map};
     let mut map = <as_map!(MyEnum)>::default();
     let _: &MyEnum = map.get(&<as_key!(MyEnum)>::A).unwrap();
     let _: &MyEnum = map.get(&MyEnumKey::A).unwrap();
     map[&MyEnumKey::B] = MyEnum::B(69);
 }

```

For more customizability of the [Map][common::MapValue::Map] check out the [variantmapderive] crate documentation

For more detailed examples check out the example project on this crates' repo