From a104356b6fc585a674839ead52036680537833ab Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Thu, 22 Nov 2018 16:39:53 +0100 Subject: [PATCH] Slightly nicer day parsing. --- 2016/src/main.rs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/2016/src/main.rs b/2016/src/main.rs index f46982a..24ad94c 100644 --- a/2016/src/main.rs +++ b/2016/src/main.rs @@ -14,16 +14,19 @@ pub mod day16; pub mod day23; pub mod day24; -fn get_impl(day: i32) -> Box { - match day { - 1 => { Box::new(day1::Day1::new()) } - 12 => { Box::new(day12::Day12::new()) } - 15 => { Box::new(day15::Day15::new()) } - 16 => { Box::new(day16::Day16::new()) } - 23 => { Box::new(day23::Day23::new()) } - 24 => { Box::new(day24::Day24::new()) } - _ => { - panic!("Unimplemented day {}", day) +fn get_impl(day: &str) -> Box { + match day.parse() { + Ok(1) => { Box::new(day1::Day1::new()) } + Ok(12) => { Box::new(day12::Day12::new()) } + Ok(15) => { Box::new(day15::Day15::new()) } + Ok(16) => { Box::new(day16::Day16::new()) } + Ok(23) => { Box::new(day23::Day23::new()) } + Ok(24) => { Box::new(day24::Day24::new()) } + Ok(val) => { + panic!("Unimplemented day {}", val) + }, + Err(_) => { + panic!("Invalid day"); } } } @@ -48,9 +51,7 @@ fn main() { .takes_value(true)) .get_matches(); - let day: i32 = (&matches.value_of("day").unwrap()).parse() - .expect("Invalid int"); - let mut implementation = get_impl(day); + let mut implementation = get_impl(&matches.value_of("day").unwrap()); let mut data: Box = match matches.value_of("input") { Some(filename) => { Box::new(fs::File::open(filename).unwrap()) } None => { Box::new(io::stdin()) } @@ -72,7 +73,7 @@ mod tests { // Verify that we can load all days let last_implemented = 1; for d in 1..(last_implemented + 1) { - get_impl(d); + get_impl(&format!("{}", d)); } } }