Listen

Description

第35章へようこそ。

今日のテーマは「手続き的マクロ」です。

これまでの3章で扱ってきたのは宣言的マクロでした。

macro_rules!の宣言で、パターンと展開の組をルールとして並べる。

入力のトークンがパターンに照らされ、対応する展開が呼び出し位置に差し込まれる。

宣言的マクロには表現の限界があります。

パターンと展開の対応で書ける範囲を超えた変換、たとえば構造体のフィールド名を文字列として取り出して別のコードに埋め込む、こうした処理は宣言的の枠を超える。

これを扱うために用意されているのが、今日扱う手続き的マクロです。

今日扱うのは、宣言的マクロの限界、手続き的マクロが解く問題、3つの形態、トークンストリームという界面、synとquoteによる分業、そして別クレートとしてコンパイルされる構造的な理由です。