第32章へようこそ。
今日のテーマは「宣言的マクロ」です。
これまでの章では、関数を使ってコードの構造を組み立ててきました。
引数を取り、処理を行い、戻り値を返す。
再利用したい処理を関数として切り出す。
ほとんどの抽象は関数で書ける。
しかし関数では書けないものがあります。
要素の個数を決めずに配列を作る、引数の型に応じてフォーマットを組み立てる、ある構造体に対する一連のメソッドをまとめて生成する。
こうした操作は関数の枠を出ている。
これらを書くために、Rustにはマクロという別の仕組みが用意されている。
今日扱うのは、マクロが関数では届かない領域を扱う仕組みであること、
コンパイル時にコードを変換するという位置づけ、
そして基本の道具であるmacro_rules!の構造です。