use enum_variants_strings::EnumVariantsStrings; #[derive(Debug, PartialEq, EnumVariantsStrings)] enum Variants { X, Y(), #[enum_variants_strings_mappings("z", "zee")] Z(i32), HelloWorld { x: String, y: String, }, } #[test] fn from() { assert_eq!(Variants::from_str("x"), Ok(Variants::X)); assert_eq!(Variants::from_str("y"), Ok(Variants::Y())); assert_eq!(Variants::from_str("z"), Ok(Variants::Z(0))); assert_eq!(Variants::from_str("zee"), Ok(Variants::Z(0))); assert_eq!( Variants::from_str("hello_world"), Ok(Variants::HelloWorld { x: String::default(), y: String::default(), }) ); } #[test] fn err() { assert!(Variants::from_str("bad").is_err()); } #[test] fn show_valid_variant_names() { assert_eq!( Variants::from_str("bad"), Err(&["x", "y", "z", "zee", "hello_world"][..]) ); }