this repo has no description
at main 171 lines 4.9 kB view raw
1/// Decided to just go with an enum for the day. Seems a bit silly, but seemed the easiest way to do matches and translate from "1" to "One" etc without a dependency on a crate. 2#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 3pub enum Day { 4 One = 1, 5 Two = 2, 6 Three = 3, 7 Four = 4, 8 Five = 5, 9 Six = 6, 10 Seven = 7, 11 Eight = 8, 12 Nine = 9, 13 Ten = 10, 14 Eleven = 11, 15 Twelve = 12, 16 Thirteen = 13, 17 Fourteen = 14, 18 Fifteen = 15, 19 Sixteen = 16, 20 Seventeen = 17, 21 Eighteen = 18, 22 Nineteen = 19, 23 Twenty = 20, 24 TwentyOne = 21, 25 TwentyTwo = 22, 26 TwentyThree = 23, 27 TwentyFour = 24, 28 TwentyFive = 25, 29} 30 31impl From<Day> for u8 { 32 fn from(day: Day) -> Self { 33 match day { 34 Day::One => 1, 35 Day::Two => 2, 36 Day::Three => 3, 37 Day::Four => 4, 38 Day::Five => 5, 39 Day::Six => 6, 40 Day::Seven => 7, 41 Day::Eight => 8, 42 Day::Nine => 9, 43 Day::Ten => 10, 44 Day::Eleven => 11, 45 Day::Twelve => 12, 46 Day::Thirteen => 13, 47 Day::Fourteen => 14, 48 Day::Fifteen => 15, 49 Day::Sixteen => 16, 50 Day::Seventeen => 17, 51 Day::Eighteen => 18, 52 Day::Nineteen => 19, 53 Day::Twenty => 20, 54 Day::TwentyOne => 21, 55 Day::TwentyTwo => 22, 56 Day::TwentyThree => 23, 57 Day::TwentyFour => 24, 58 Day::TwentyFive => 25, 59 } 60 } 61} 62 63impl core::fmt::Display for Day { 64 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 65 f.write_str(match self { 66 Day::One => "One", 67 Day::Two => "Two", 68 Day::Three => "Three", 69 Day::Four => "Four", 70 Day::Five => "Five", 71 Day::Six => "Six", 72 Day::Seven => "Seven", 73 Day::Eight => "Eight", 74 Day::Nine => "Nine", 75 Day::Ten => "Ten", 76 Day::Eleven => "Eleven", 77 Day::Twelve => "Twelve", 78 Day::Thirteen => "Thirteen", 79 Day::Fourteen => "Fourteen", 80 Day::Fifteen => "Fifteen", 81 Day::Sixteen => "Sixteen", 82 Day::Seventeen => "Seventeen", 83 Day::Eighteen => "Eighteen", 84 Day::Nineteen => "Nineteen", 85 Day::Twenty => "Twenty", 86 Day::TwentyOne => "TwentyOne", 87 Day::TwentyTwo => "TwentyTwo", 88 Day::TwentyThree => "TwentyThree", 89 Day::TwentyFour => "TwentyFour", 90 Day::TwentyFive => "TwentyFive", 91 }) 92 } 93} 94 95impl From<Day> for String { 96 fn from(day: Day) -> Self { 97 day.to_string() 98 } 99} 100 101impl core::convert::From<u8> for Day { 102 fn from(value: u8) -> Self { 103 match value { 104 1 => Day::One, 105 2 => Day::Two, 106 3 => Day::Three, 107 4 => Day::Four, 108 5 => Day::Five, 109 6 => Day::Six, 110 7 => Day::Seven, 111 8 => Day::Eight, 112 9 => Day::Nine, 113 10 => Day::Ten, 114 11 => Day::Eleven, 115 12 => Day::Twelve, 116 13 => Day::Thirteen, 117 14 => Day::Fourteen, 118 15 => Day::Fifteen, 119 16 => Day::Sixteen, 120 17 => Day::Seventeen, 121 18 => Day::Eighteen, 122 19 => Day::Nineteen, 123 20 => Day::Twenty, 124 21 => Day::TwentyOne, 125 22 => Day::TwentyTwo, 126 23 => Day::TwentyThree, 127 24 => Day::TwentyFour, 128 25 => Day::TwentyFive, 129 _ => panic!("day out of range (1..=25)"), 130 } 131 } 132} 133 134impl core::convert::From<&str> for Day { 135 fn from(s: &str) -> Self { 136 match s { 137 "One" => Day::One, 138 "Two" => Day::Two, 139 "Three" => Day::Three, 140 "Four" => Day::Four, 141 "Five" => Day::Five, 142 "Six" => Day::Six, 143 "Seven" => Day::Seven, 144 "Eight" => Day::Eight, 145 "Nine" => Day::Nine, 146 "Ten" => Day::Ten, 147 "Eleven" => Day::Eleven, 148 "Twelve" => Day::Twelve, 149 "Thirteen" => Day::Thirteen, 150 "Fourteen" => Day::Fourteen, 151 "Fifteen" => Day::Fifteen, 152 "Sixteen" => Day::Sixteen, 153 "Seventeen" => Day::Seventeen, 154 "Eighteen" => Day::Eighteen, 155 "Nineteen" => Day::Nineteen, 156 "Twenty" => Day::Twenty, 157 "TwentyOne" => Day::TwentyOne, 158 "TwentyTwo" => Day::TwentyTwo, 159 "TwentyThree" => Day::TwentyThree, 160 "TwentyFour" => Day::TwentyFour, 161 "TwentyFive" => Day::TwentyFive, 162 _ => panic!("unknown day string"), 163 } 164 } 165} 166 167impl core::convert::From<String> for Day { 168 fn from(value: String) -> Self { 169 Day::from(value.as_str()) 170 } 171}