no-more-secrets-rust/src/color.rs

41 lines
855 B
Rust

use std::{convert::TryFrom, ffi::OsString};
pub(crate) enum Color {
Black = 0,
Red = 1,
Green = 2,
Yellow = 3,
Blue = 4,
Magenta = 5,
Cyan = 6,
White = 7,
}
impl Default for Color {
fn default() -> Self {
Color::Blue
}
}
impl TryFrom<OsString> for Color {
type Error = ();
fn try_from(s: OsString) -> Result<Self, ()> {
let s = match s.to_str() {
Some(s) => s,
None => return Err(()),
};
Ok(match s {
"black" => Color::Black,
"red" => Color::Red,
"green" => Color::Green,
"yellow" => Color::Yellow,
"blue" => Color::Blue,
"magenta" => Color::Magenta,
"cyan" => Color::Cyan,
"white" => Color::White,
_ => return Err(()),
})
}
}