从父模块导入宏

mar*_*aas 9 rust rust-macros rust-decl-macros

我在箱子里重复使用宏时遇到了麻烦.

如果在以下位置定义了宏./src/macros.rs:

#[macro_export]
macro_rules! my_macro {
    ...
}
Run Code Online (Sandbox Code Playgroud)

用于./src/lib.rs:

#[macro_use]
pub mod macros;
Run Code Online (Sandbox Code Playgroud)

我看不到这个宏./src/submod/lib.rs:

my_macro!(...);
Run Code Online (Sandbox Code Playgroud)

它会产生错误消息error: macro undefined: 'my_macro!'.

有没有办法在这个子模块中导入这个宏submod

mar*_*aas 6

我想到了!它是自动导入的,但我没有意识到宏是按顺序导入的!

我进口submod之前模块macros,因此my_macro是不可见的.通过交换订单,我得到了预期的行为.

  • 很高兴看到前后修复它的代码. (5认同)