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