use crate::prelude::*;
use strum::VariantNames;
use strum_macros::{EnumString, EnumVariantNames};
#[derive(PartialEq, Debug, EnumVariantNames, EnumString)]
enum FancyColor {
Burgundy,
Azure,
Lime,
}
fn parse_fancy_enum(s: &str) -> Result<(&str, FancyColor), ParsingError> {
Cursor::from(s)
.text_alt(FancyColor::VARIANTS)
.parse_selection()
.validate()
}
#[cfg(test)]
mod tests {
use super::*;
use test_log::test;
#[test]
fn test_parse_enum() -> Result<(), ParsingError> {
let (c, color) = parse_fancy_enum("Burgundy Arrow")?;
assert_eq!(color, FancyColor::Burgundy);
assert_eq!(c, " Arrow");
Ok(())
}
}