#enums #derive #deriving #macro #proc-macro

deprecated macro enum-kinds-macros

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

4 releases

Uses old Rust 2015

0.2.1 Mar 6, 2018
0.2.0 Mar 5, 2018
0.1.1 May 17, 2017
0.1.0 May 16, 2017

#49 in #deriving

MIT license

9KB
95 lines

enum-kinds-macros

Build Status Latest Version Rust Documentation

DEPRECATED: This crate along with enum-kinds-traits have been replaced with enum-kinds crate. Users are asked to migrate to the new crate as further development will take place there.

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

#[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.

Issues

While the crates are fairly simple, issues are still possible. If you encounter any problems using these crates, please report them at the issue tracker.

License

The crates are available under the terms of MIT license.

Dependencies

~2MB
~48K SLoC