マクロ
マクロはコンパイル時に 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.
このセクションの要点は、マクロの一般的な利便性と、その使用方法を示すことにあります。マクロとして定義されている理由と、展開先は特に重要ではありません。
マクロの定義についてはコースでは説明しませんが、後のセクションで導出マクロの使用について説明します。