是否可以通过使用该宏的结构内部的派生宏来 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 的基本特征: 他们获取现有项目的令牌并生成新的、单独的项目(通常是特征 impls)。

如果您想修改 struct 项目本身,您必须制作一个 attribute macro,它可以 return 替换输入标记。属性宏不是使用 derive 属性调用的,而是属性本身:#[some_macro] pub struct Building { ...