custom_attrs 1.2.6

A library that allows you to configure values specific to each variants of an enum.
Documentation
use custom_attrs::CustomAttrs;

#[derive(CustomAttrs)]
#[attr(pub a: usize = 8)]
enum Enum {
    #[attr(a = 5)]
    Variant1,

    #[attr(a = 3)]
    Variant2,

    Variant3,
}

#[derive(CustomAttrs)]
#[attr(pub a: Option<usize>)]
enum Enum2 {
    #[attr(a = 5)]
    Variant1,

    Variant2,

    #[attr(a = None)]
    Variant3,
}

#[test]
fn test_attribute_get() {
    assert_eq!(Enum::Variant1.get_a(), 5);
    assert_eq!(Enum::Variant2.get_a(), 3);
}

#[test]
fn test_attribute_default() {
    assert_eq!(Enum::Variant3.get_a(), 8)
}

#[test]
fn test_attribute_options() {
    assert_eq!(Enum2::Variant1.get_a(), Some(5));
    assert!(Enum2::Variant2.get_a().is_none());
    assert!(Enum2::Variant3.get_a().is_none());
}