enum Enum {
Foo,
Bar = 9,
Baz
}
enum Enum {
Foo,
Bar,
Baz,
}
impl std::fmt::Display for Enum {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let out = match self {
Enum::Foo => "FOO",
Enum::Bar => "BAR",
Enum::Baz => "BAZ",
};
write!(f, "{}", out)
}
}
impl std::str::FromStr for Enum {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"FOO" => Ok(Enum::Foo),
"BAR" => Ok(Enum::Bar),
"BAZ" => Ok(Enum::Baz),
_ => Err(format!("Unknown enum value: {}", s)),
}
}
}
fn main() {
let foo: Enum = "FOO".parse().unwrap();
println!("{}", foo.to_string());
let bar: Enum = "BAR".parse().unwrap();
println!("{}", bar.to_string());
let baz: Enum = "BAZ".parse().unwrap();
println!("{}", baz.to_string());
}