diff options
-rw-r--r-- | src/lib.rs | 14 | ||||
-rw-r--r-- | src/main.rs | 2 |
2 files changed, 6 insertions, 10 deletions
@@ -5,7 +5,6 @@ array_windows, iter_intersperse, impl_trait_in_assoc_type, - macro_metavar_expr, slice_group_by )] @@ -33,24 +32,21 @@ 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. +macro_rules! days { ($($day:path),*) => { - pub fn get_days() -> [(&'static str, [Box<dyn Fn(&str) -> anyhow::Result<usize>>; 2]); ${count(day)}] { - [ + pub fn days() -> Vec<(&'static str, [Box<dyn Fn(&str) -> anyhow::Result<usize>>; 2])> { + vec![ $((<$day>::INPUT, [ Box::new(<$day>::part_1), Box::new(<$day>::part_2), - ]) - ,)* + ]),)* ] } }; } -get_days!( +days!( day_01::Day01, day_02::Day02, day_03::Day03, diff --git a/src/main.rs b/src/main.rs index 0883c66..acee1df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let mut args = std::env::args().skip(1); - let days = aoc_2023::get_days(); + let days = aoc_2023::days(); let days_n = if let Some(first) = args.next() { if "all".contains(first.as_str()) { |