ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

rustでマクロ

rust standard library cookbookから。

マクロを使って、簡単な可変長引数を実現する例。

macro_rules! multiply {
    ( $last:expr ) => { $last };

    ( $head:expr, $($tail:expr), + ) => {
        $head * multiply!($($tail), +)
    };

}

fn main()
{
    let val1 = multiply!(2, 4, 8);
    println!("2 * 4 * 8 = {}", val1);

    let val2 = multiply!(2, 4, 8, 16);
    println!("2 * 4 * 8 * 16 = {}", val2);
}

マクロの中で再帰するのか。すごいな。