Crate enum_kinds_macros [] [src]

Generate enums with matching variants, but without any of the associated data. enum-kinds-traits crate contains trait definitions used by this crate.

In other words, enum-kinds-macros automatically generates enums that have the same set of variants as the original enum, but with all the embedded data stripped away (that is, all the variants are unit variants). Additionally, enum-kinds-macros implements ToKind trait for the original enum allowing one to get the associated unit variant.

The crates are compatible with stable Rust releases.

Example

This example is not tested
#[macro_use]
extern crate enum_kinds_macros;
extern crate enum_kinds_traits;
 
use enum_kinds_traits::ToKind;
 
#[derive(EnumKind)]
#[enum_kind_name(SomeEnumKind)]
enum SomeEnum {
    First(String, u32),
    Second(char),
    Third
}
 
#[test]
fn test_enum_kind() {
    let first = SomeEnum::First("Example".to_owned(), 32);
    assert_eq!(first.kind(), SomeEnumKind::First);
}

The #[derive(EnumKind)] attribute automatically creates another enum named SomeEnumKind that contains matching unit variant for each of the variants in SomeEnum. Additionally, SomeEnum implements ToKind trait that provides the kind method for constructing matching values from SomeEnumKind.

Functions

enum_kind