是否可以通过使用该宏的结构内部的派生宏来 change/generate 编码?
Is it possible to change/generate code through derive macro inside of the struct that uses that macro?
我很好奇是否可以更改使用派生宏的结构内部的代码,或者您是否仅限于在外部生成新代码?
示例
正在通过 SomeMacro 将另一个字段添加到 Building 结构。
#[derive(SomeMacro)]
pub struct Building {
colour: String,
// Add height: u8 through derive macro
}
这是不可能的。这是 derive macros 的基本特征: 他们获取现有项目的令牌并生成新的、单独的项目(通常是特征 impl
s)。
如果您想修改 struct
项目本身,您必须制作一个 attribute macro,它可以 return 替换输入标记。属性宏不是使用 derive
属性调用的,而是属性本身:#[some_macro] pub struct Building { ...
我很好奇是否可以更改使用派生宏的结构内部的代码,或者您是否仅限于在外部生成新代码?
示例
正在通过 SomeMacro 将另一个字段添加到 Building 结构。
#[derive(SomeMacro)]
pub struct Building {
colour: String,
// Add height: u8 through derive macro
}
这是不可能的。这是 derive macros 的基本特征: 他们获取现有项目的令牌并生成新的、单独的项目(通常是特征 impl
s)。
如果您想修改 struct
项目本身,您必须制作一个 attribute macro,它可以 return 替换输入标记。属性宏不是使用 derive
属性调用的,而是属性本身:#[some_macro] pub struct Building { ...