属性マクロ
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
#手続き的マクロ