Повторення
Макроси можуть використовувати + у списку аргументів, щоб вказати, що аргумент може повторюватися щонайменше один раз, або *, щоб вказати, що аргумент може повторюватися нуль або більше разів.
У наведеному нижче прикладі оточення зіставника $(...),+ буде зіставляти один або більше вираз, розділених комами.
Також зауважте, що крапка з комою в останньому випадку є необов’язковою.
// `find_min!` will calculate the minimum of any number of arguments.
macro_rules! find_min {
// Base case:
($x:expr) => ($x);
// `$x` followed by at least one `$y,`
($x:expr, $($y:expr),+) => (
// Call `find_min!` on the tail `$y`
std::cmp::min($x, find_min!($($y),+))
)
}
fn main() {
println!("{}", find_min!(1));
println!("{}", find_min!(1 + 2, 2));
println!("{}", find_min!(5, 2 * 3, 4));
}