Итак, я определил следующий процедурный макрос:
#[proc_macro_attribute]
pub fn hello(attr: TokenStream, item: TokenStream) -> TokenStream {
println!("attr: {}", attr);
println!("item: {}", item);
item
}
, затем я применяю этот макрос pro c к не встроенному модулю:
// In file some_mod.rs
#![hello]
fn foo() {}
fn bar() {}
Выходные данные компилятор указывает, что элемент, передаваемый в pro c macro hello
, равен mod some_mod;
без каких-либо элементов в модуле. Однако я хочу внести некоторые изменения в содержание модуля some_mod
.
Я выяснил, что встроенный модуль работает:
mod some_mod {
#![hello]
fn foo() { }
fo bar() { }
}
Элемент, переданный моему макросу c, равен mod some_mod { fn foo() { } fn bar() { } }
.
Но я буду использовать свой профи c макрос в сложной иерархии модулей, я не хочу помещать все эти модули в один файл.
Есть ли способ заставить мой pro c макрос получить содержимое не встроенного модуля