delve 0.3.0

Provides a number of macros that make working with enums and strings more convenient.
Documentation
use delve_derive::EnumToStr;

#[test]
fn test_plain() {
    #[derive(Debug, PartialEq, EnumToStr)]
    #[allow(dead_code)]
    enum Week {
        Sunday,
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
    }

    assert_eq!("Sunday", <Week as Into<&'static str>>::into(Week::Sunday));
    assert_eq!("Friday", <Week as Into<&'static str>>::into(Week::Friday));
}

#[test]
fn test_attrs() {
    #[derive(Debug, PartialEq, EnumToStr)]
    #[allow(dead_code)]
    #[delve(rename_variants = "uppercase")]
    enum Week<'a> {
        Sunday,
        Monday,
        Tuesday,
        #[delve(skip)]
        Wednesday,
        Thursday(&'a String),
        #[delve(to = "fri")]
        Friday,
        Saturday,
    }

    assert_eq!("MONDAY", <Week as Into<&'static str>>::into(Week::Monday));
    assert_eq!("fri", <Week as Into<&'static str>>::into(Week::Friday));

    assert_eq!("fri", <&Week as Into<&'static str>>::into(&Week::Friday));
}

#[test]
#[should_panic]
#[allow(unused_must_use)]
fn test_skipped() {
    #[derive(Debug, PartialEq, EnumToStr)]
    #[allow(dead_code)]
    #[delve(rename_variants = "uppercase")]
    enum Week {
        Sunday,
        Monday,
        Tuesday,
        #[delve(skip)]
        Wednesday,
        Thursday,
        #[delve(to = "fri")]
        Friday,
        Saturday,
    }

    <Week as Into<&'static str>>::into(Week::Wednesday);
}