Crate enum_ordinalize[][src]

Enum Ordinalize

This crates provides ordinalize_enum and create_ordinalized_enum macros to let enums can not only get its variants' ordinal but also be constructed with an ordinal.

Make an Enum Ordinalized

ordinalize_enum macro can implement a ordinal method and a from_ordinal associated function for an existing enum.

#[macro_use] extern crate enum_ordinalize;

#[derive(Debug, PartialEq)]
enum MyEnum {
    Zero,
    One,
    Two,
}

ordinalize_enum!(MyEnum,
    u8,
    Zero,
    One,
    Two
);

assert_eq!(2, MyEnum::Two.ordinal());
assert_eq!(Some(MyEnum::One), MyEnum::from_ordinal(1));

Create an Ordinalized Enum

create_ordinalized_enum macro can create an enum and implement a ordinal method and a from_ordinal associated function for it. The new enum also implements Debug, PartialEq, and Clone traits.

#[macro_use] extern crate enum_ordinalize;

create_ordinalized_enum!(MyEnum,
    u8,
    Zero,.travis.yml
    One,
    Two
);

assert_eq!(2, MyEnum::Two.ordinal());
assert_eq!(Some(MyEnum::One), MyEnum::from_ordinal(1));

create_ordinalized_enum!(pub MyPublicEnum,
    u8,
    A,
    B,
    C
);

assert_eq!(2, MyPublicEnum::C.ordinal());
assert_eq!(Some(MyPublicEnum::B), MyPublicEnum::from_ordinal(1));

create_ordinalized_enum!(MySpecialEnum,
    u8,
    Two = 2,
    Four = 4,
    Eight = 8
);

assert_eq!(2, MySpecialEnum::Two.ordinal());
assert_eq!(Some(MySpecialEnum::Four), MySpecialEnum::from_ordinal(4));

Macros

create_ordinalized_enum

Create an enum and implement a ordinal method and a from_ordinal associated function for it. The new enum also implements Debug, PartialEq, and Clone traits.

ordinalize_enum

Implement a ordinal method and a from_ordinal associated function for an existing enum.