15.3 Repeat

매크로는 인자 목록에서 +를 사용하여 인자가 적어도 한 번 이상 반복 될 수 있음을 나타내고 *는 0번 혹은 그 이상 반복할 것을 의미한다.

다음 예제에서, $(...),+으로 둘러쌓인 matcher는 콤마로 분리된 하나 혹은 그 이상 표현과 적합한 것을 찾는다. 또한 마지막 케이스의 경우 세미콜론이 옵션사항이다.

// `min!` .
macro_rules! find_min {
// :
($x:expr) => ($x);
// `$y,` `$x`
($x:expr, $($y:expr),+) => (
// `find_min!` `$y`
std::cmp::min($x, find_min!($($y),+))
)
}
fn main() {
println!("{}", find_min!(1u32));
println!("{}", find_min!(1u32 + 2 , 2u32));
println!("{}", find_min!(5u32, 2u32 * 3, 4u32));
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

results matching ""

    No results matching ""