属性マクロ
Effective Rust ― Rustコードを改善し、エコシステムを最大限に活用するための35項目
プログラム内のある要素の配置され、その要素の トークン を入力として受け取るマクロ
e.g. 関数
code:rs
#log_invocation
fn add_three(x: u32) -> u32 {
x + 3
}
関数的マクロ と同様に任意のトークンを返す
関数型マクロとは異なり、2 つ の引数を受け取る
1 つ目の引数は属性に渡されたトークン列を、2 つ目は属性が付けられた要素のトークン列を受け取る
e.g. pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream
引数の解析には syn クレートが役立つ
#Rust #手続き的マクロ