我正在尝试在Rust中编写自己的派生模式宏,并且关于它的文档在示例方面有些缺乏。
我有一个类似于如下结构体:
#[derive(MyMacroHere)]
struct Example {
id: i64,
value: Option<String>,
}
我希望我的宏可以生成类似于下面的方法:
fn set_fields(&mut self, id: i64, value: Option<String>) {
// ...
}
如何使用TokenStream
特质来实现类似的东西的基本步骤是什么?
proc_macro
的API文档?在我看来,这些将是最好的起点。 - Joe ClayTokenStream
(在本例中,就是组成Example
定义的标记),然后运行一段代码以生成一个新的TokenStream
添加到程序中(这个将会是set_fields
定义所包含的标记)。人们通常使用syn
库将输入标记转换为Rust语法树,使用quote
库生成输出。 - Joe Clay