所以我定义了以下程序宏:
#[proc_macro_attribute]
pub fn hello(attr: TokenStream, item: TokenStream) -> TokenStream {
println!("attr: {}", attr);
println!("item: {}", item);
item
}
然后我将此 proc 宏应用于非内联模块:
// In file some_mod.rs
#![hello]
fn foo() {}
fn bar() {}
编译器的输出表明传递给 proc 宏的项目hello
是mod some_mod;
,模块中没有任何项目。但是我想对模块的内容做一些修改some_mod
。
我发现内联模块有效:
mod some_mod {
#![hello]
fn foo() { }
fo bar() { }
}
传递给我的 proc 宏的项目是mod some_mod { fn foo() { } fn bar() { } }
.
但我将在复杂的模块层次结构中使用我的 proc 宏,我不想将所有这些模块放在一个文件中。
有什么方法可以让我的 proc 宏获取非内联模块的内容?