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

Повторення

Макроси можуть використовувати + у списку аргументів, щоб вказати, що аргумент може повторюватися щонайменше один раз, або *, щоб вказати, що аргумент може повторюватися нуль або більше разів.

У наведеному нижче прикладі оточення зіставника $(...),+ буде зіставляти один або більше вираз, розділених комами. Також зауважте, що крапка з комою в останньому випадку є необов’язковою.

// `find_min!` will calculate the minimum of any number of arguments.
macro_rules! find_min {
    // Base case:
    ($x:expr) => ($x);
    // `$x` followed by at least one `$y,`
    ($x:expr, $($y:expr),+) => (
        // Call `find_min!` on the tail `$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));
}