Dev Study
Rust コース

58. macro_rules! — 宣言的マクロ

macro_rules! は「このパターンの呼び出しを、このコードに展開する」という規則を定義する宣言的マクロです。$( $x:expr ),* は「式がカンマ区切りで0個以上並ぶ」形に一致し、展開側の $( ... )* がその個数ぶん繰り返されます。vec! もこの仕組みで実装されています。

関数では実現できない「引数の個数が自由」「コードそのものを受け取って組み立てる」処理を共通化できます。実務ではまず println! や vec! など既存のマクロを使う側で十分で、自作を考えるのは同じ形のコードの繰り返しが目立ってきたときです。

マクロは関数と違い、呼び出すより前のコードで定義されている必要があります。エラーも展開後のコードに対して報告されて追いにくいので、小さな規則から始めるのがつまずきにくいです。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Rust
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗