繰り返し
マクロでは、引数リスト内で + を使用して、引数が少なくとも1回繰り返せることを示したり、* を使用して、引数が0回以上繰り返せることを示したりできます。
次の例では、マッチャーを $(...),+ で囲むことで、カンマで区切られた1つ以上の式にマッチします。 また、最後のケースではセミコロンが省略可能であることにも注意してください。
// `find_min!` は任意の数の引数の最小値を計算します。 macro_rules! find_min { // 基底ケース: ($x:expr) => ($x); // `$x` の後に少なくとも1つの `$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)); }