From df48bfe6ecf505738648add669f86fbeb03617b7 Mon Sep 17 00:00:00 2001 From: Matt Clarke Date: Tue, 5 Dec 2023 21:56:53 +0000 Subject: [PATCH] feat: add macro arms for running individual parts of a solution (#44) --- src/template/mod.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/template/mod.rs b/src/template/mod.rs index 3bbd505..49402b2 100644 --- a/src/template/mod.rs +++ b/src/template/mod.rs @@ -34,6 +34,8 @@ pub fn read_file_part(folder: &str, day: Day, part: u8) -> String { } /// Creates the constant `DAY` and sets up the input and runner for each part. +/// +/// The optional, second parameter (1 or 2) allows you to only run a single part of the solution. #[macro_export] macro_rules! solution { ($day:expr) => { @@ -47,4 +49,24 @@ macro_rules! solution { run_part(part_two, &input, DAY, 2); } }; + ($day:expr, 1) => { + /// Allows solving part one in isolation + const DAY: advent_of_code::template::Day = advent_of_code::day!($day); + + fn main() { + use advent_of_code::template::runner::*; + let input = advent_of_code::template::read_file("inputs", DAY); + run_part(part_one, &input, DAY, 1); + } + }; + ($day:expr, 2) => { + /// Allows solving part two in isolation + const DAY: advent_of_code::template::Day = advent_of_code::day!($day); + + fn main() { + use advent_of_code::template::runner::*; + let input = advent_of_code::template::read_file("inputs", DAY); + run_part(part_two, &input, DAY, 2); + } + }; }