1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#[derive(Debug, PartialEq, Clone, Copy)] pub enum DetailLevel { Count, Name, Diff, } impl std::str::FromStr for DetailLevel { type Err = String; fn from_str(text: &str) -> Result<Self, Self::Err> { Ok(match text { "count" => DetailLevel::Count, "name" => DetailLevel::Name, "diff" => DetailLevel::Diff, _ => return Err(text.to_owned()), }) } }