Repeat
Macros có thể sử dụng +
trong danh sách đối số để biểu thị rằng một đối số có thể lặp lại ít nhất một lần,
hoặc *
, để biểu thị rằng một đối số có thể lặp lại từ không cho đến nhiều lần.
Trong ví dụ sau đây, việc bao quanh bộ so khớp (matcher) bởi $(...),+
sẽ phù hợp với
một hoặc nhiều biểu thức, được cách nhau bởi dấu phẩy.
Lưu ý rằng dấu chấm phẩy (;) là tùy chọn cho trường hợp cuối cùng.
// `find_min!` sẽ tìm ra giá trị nhỏ nhất trong dãy đối số. macro_rules! find_min { // Trường hợp cơ bản: ($x:expr) => ($x); // `$x` theo sau bởi ít nhất một `$y,` ($x:expr, $($y:expr),+) => ( // Gọi `find_min!` trên các đối số còn lại `$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)); }