eonj - Overview
macro_rules! fizzbuzz_unit { ( $n:expr ) => { match ($n % 5, $n % 3) { (0, 0) => String::from("FizzBuzz"), (0, _) => String::from("Buzz"), (_, 0) => String::from("Fizz"), (_, _) => format!("{}", $n), } } } macro_rules! fizzbuzz { ( $m:expr, $o:expr ) => { for n in 1..=($m) { $o(fizzbuzz_unit!(n)) } } } fn printer(s: String) { println!("{}", s) } fn main() { fizzbuzz!(100, printer) }