1
0

main runner with more meaningless output

This commit is contained in:
2024-12-02 20:43:55 +01:00
parent 26530738dc
commit 283c49a7d8
2 changed files with 30 additions and 7 deletions

View File

@@ -1,13 +1,35 @@
use std::env::args;
use std::{collections::HashMap, env::args};
use advent_of_rust_2024::*;
use itertools::Itertools;
fn main() {
let mains: HashMap<u8, fn() -> ()> = HashMap::from_iter([
(1, day01::day_main as fn()),
(2, day02::day_main),
(3, day03::day_main),
]);
let day: Option<u8> = args().nth(1).and_then(|a| a.parse().ok());
match day {
Some(1) => day01::day_main(),
Some(2) => day02::day_main(),
Some(3) => day03::day_main(),
_ => println!("Please select a day to run"),
}
let Some(day) = day else {
mains
.iter()
.sorted_by_key(|entry| entry.0)
.for_each(|(d, f)| {
println!("Day {d}:");
f();
});
return;
};
let Some(f) = mains.get(&day) else {
println!("No implementation for day {day}.");
println!(
"Pick one of {}",
mains.keys().map(|k| k.to_string()).join(", ")
);
return;
};
println!("Day {day}:");
f();
}