mod solutions; mod utils; use std::error::Error; use solutions::*; #[tokio::main] async fn main() -> Result<(), Box<dyn Error>> { let days: Vec<Box<dyn Solution + Sync>> = vec![ Box::new(day01::Day01 {}), Box::new(day02::Day02 {}), Box::new(day03::Day03 {}), Box::new(day04::Day04 {}), Box::new(day05::Day05 {}), Box::new(day06::Day06 {}), ]; let mut t = vec![]; // Run through and generate solutions for day in days.leak().iter().rev() { let task = tokio::spawn(async { day.run().unwrap() }); t.push(task); } let mut days = vec![]; for thread in t { days.push(thread.await?); } for day in days { println!("========= Day {} ==========", day.day); println!("Part1 Result: {}", day.part1); println!("Part2 Result: {}", day.part2); println!("========= {}ms =========", day.time.as_millis()); } Ok(()) }