【Rust】Procedural macros入門
基本
2018 editionから使えるようになった
proc-macroで実装可能
macro_rules!より柔軟
Function-like: custom_macro!
proc_macro_hygieneで式として展開
Derive: #[derive(CustomMacros]
Attribute: #[custom_attribute]
よく登場するcrate概略
proc_macro
cipepser.icon Cargo.tomlの[lib]で、proc-macro = trueするだけで使える?
build.rsやmain.rsのような別のコンテキストにproc_macroの機能を持ち込む
proc_macroの型を、非マクロコードでも存在できるようにする
Procedual macros自体の単体テストを可能にする
syn
文字列からRustコードに構文解析
quote
synのデータ構造を受け取り、Rustコードに変換し直す
References