在不同的文件中使用宏

Use macro in different file

我正在构建一个库,我有以下结构:

src/lib.rs

mod a;
mod b;

src/b.rs:

macro_rules! x ...

src/a.rs:

x!()

这行不通。我尝试 fiddle 与 #macro_export#macro_use 但没有成功。在同一个库中但在不同的模块和文件中重用宏的正确方法是什么?

为了使来自子模块的宏对 "sibling" 模块可见,它们必须按特定顺序声明,也就是说,带有宏的模块应该首先声明。它还应该附加 #[macro_use] 属性。这应该有效:

#[macro_use] mod b;
mod a;

#[macro_use] 属性使模块中的宏对所有代码可见 "below" 模块声明,这就是为什么您的原始变体无法工作的原因。