Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

繰り返し

マクロでは、引数リスト内で + を使用して、引数が少なくとも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));
}