macro_rules! run {
    ($day: expr, $input: expr) => { ... };
}
Expand description

The run macro expands

run!(AdventOfCode2021::<Day25>, &input);

to

{
    let problem = AdventOfCode2021::<Day25>;
    (&&&problem).run(&input)
}

and that’s it!

What’s with all the &s? It’s autoderef specialization, see specialization.