diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 48 |
1 files changed, 47 insertions, 1 deletions
@@ -4,7 +4,9 @@ iter_array_chunks, array_windows, iter_intersperse, - impl_trait_in_assoc_type + impl_trait_in_assoc_type, + macro_metavar_expr, + slice_group_by )] pub mod day_01; @@ -24,6 +26,50 @@ pub mod day_14; pub mod day_15; pub mod day_16; pub mod day_17; +pub mod day_18; +pub mod printer; + +pub use printer::Printer; + +pub type Result<T, E = Box<dyn std::error::Error>> = std::result::Result<T, E>; + +#[macro_export] +macro_rules! get_days { + // `()` indicates that the macro takes no argument. + ($($day:path),*) => { + pub fn get_days() -> [(&'static str, [Box<dyn Fn(&str) -> anyhow::Result<usize>>; 2]); ${count(day)}] { + [ + $((<$day>::INPUT, + [ + Box::new(<$day>::part_1), + Box::new(<$day>::part_2), + ]) + ,)* + ] + } + }; +} + +get_days!( + day_01::Day01, + day_02::Day02, + day_03::Day03, + day_04::Day04, + day_05::Day05, + day_06::Day06, + day_07::Day07, + day_08::Day08, + day_09::Day09, + day_10::Day10, + day_11::Day11, + day_12::Day12, + day_13::Day13, + day_14::Day14, + day_15::Day15, + day_16::Day16, + day_17::Day17, + day_18::Day18 +); pub trait Problem { const DAY: u8; |