マクロ

マクロはコンパイル時に Rust コードに展開され、可変長引数を取ることができます。これらは末尾の ! で区別されます。Rust 標準ライブラリには、各種の便利なマクロが含まれています。

  • println!(format, ..): std::fmt で説明されている書式を適用して、1 行を標準出力に出力します。
  • format!(format, ..): println! と同様に機能しますが、結果を文字列として返します。
  • dbg!(expression): 式の値をログに記録して返します。
  • todo!(): 一部のコードに未実装のマークを付けます。実行するとパニックが発生します。
  • unreachable!(): コードの一部をアクセス不能としてマークします。実行するとパニックが発生します。
fn factorial(n: u32) -> u32 {
    let mut product = 1;
    for i in 1..=n {
        product *= dbg!(i);
    }
    product
}

fn fizzbuzz(n: u32) -> u32 {
    todo!()
}

fn main() {
    let n = 4;
    println!("{n}! = {}", factorial(n));
}
This slide should take about 2 minutes.

このセクションの要点は、マクロの一般的な利便性と、その使用方法を示すことにあります。マクロとして定義されている理由と、展開先は特に重要ではありません。

マクロの定義についてはコースでは説明しませんが、後のセクションで導出マクロの使用について説明します。