enum_properties 0.3.0

A macro for declaring static properties on enum variants
Documentation
use enum_properties::enum_properties;

pub struct FruitProperties {
    pub name: &'static str,
    pub description: &'static str,
    pub weight: f32,
}

enum_properties! {
    #[repr(u8)]
    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
    pub enum Fruit: FruitProperties {
        Apple {
            name: "apple",
            description: "Keeps the doctor away.",
            weight: 0.1,
        } = 0,
        Orange {
            name: "orange",
            description: "Round and refreshing.",
            weight: 0.13,
        } = 2,
        Banana {
            name: "banana",
            description: "Elongated and yellow.",
            weight: 0.12,
        } = 3,
    }
}

fn main() {
    println!(
        "An {} weighs about {} kg.",
        Fruit::Apple.name,
        Fruit::Apple.weight
    );
    assert_eq!(Fruit::Apple as u8, 0);
    assert_eq!(Fruit::Orange as u8, 2);
    assert_eq!(Fruit::Banana as u8, 3);
}