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 enum
s 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
#[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 |