반복
매크로는 인자 목록에서 +를 사용하여 인자가 한 번 이상 반복될 수 있음을 나타내거나, *를 사용하여 인자가 0번 이상 반복될 수 있음을 나타낼 수 있습니다.
다음 예제에서, 매처(matcher)를 $(...),+로 감싸면 콤마로 구분된 하나 이상의 표현식과 매치됩니다. 또한 마지막 케이스에서는 세미콜론이 선택사항임에 유의하세요.
// `find_min!`은 임의 개수의 인자들 중 최솟값을 계산합니다.
macro_rules! find_min {
// 기본 케이스:
($x:expr) => ($x);
// `$x` 뒤에 최소 하나의 `$y,`가 오는 경우
($x:expr, $($y:expr),+) => (
// 나머지 `$y`들에 대해 `find_min!`을 호출합니다.
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));
}