macro_rules! product { ($first:ident, $($next:ident),*) => { ... }; }
Macro for joining multiple iterators