1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
use std::convert::TryFrom; use std::fmt::{Display, Error, Formatter}; #[derive(Debug, PartialEq)] pub enum DayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, } impl TryFrom<u8> for DayOfWeek { type Error = String; fn try_from(x: u8) -> Result<Self, Self::Error> { use DayOfWeek::*; match x { 0 => Ok(Sunday), 1 => Ok(Monday), 2 => Ok(Tuesday), 3 => Ok(Wednesday), 4 => Ok(Thursday), 5 => Ok(Friday), 6 => Ok(Saturday), _ => Err("Invalid day of week".to_string()), } } } impl Display for DayOfWeek { fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { f.write_str(format!("{:?}", self).as_str()) } } pub trait ShortTitle { fn short_title(&self) -> String; } impl ShortTitle for DayOfWeek { fn short_title(&self) -> String { (&format!("{}", self)[..3]).to_string() } }