Module 在不同的文件中使用宏

Module 在不同的文件中使用宏,module,macros,rust,Module,Macros,Rust,我正在建造一个图书馆,我有以下结构: src/lib.rs mod a; mod b; src/b.rs: macro_rules! x ... src/a.rs: x!() 这不管用。我试图摆弄#macro_export和#macro_use,但没有成功。在同一个库中但在不同的模块和文件中重复使用宏的正确方法是什么?为了使子模块中的宏对“同级”模块可见,必须按特定顺序声明它们,即,应首先声明具有宏的模块。它还应该附加#[macro\u use]属性。这应该起作用: #[macro_use

我正在建造一个图书馆,我有以下结构:

src/lib.rs

mod a;
mod b;
src/b.rs:

macro_rules! x ...
src/a.rs:

x!()

这不管用。我试图摆弄
#macro_export
#macro_use
,但没有成功。在同一个库中但在不同的模块和文件中重复使用宏的正确方法是什么?

为了使子模块中的宏对“同级”模块可见,必须按特定顺序声明它们,即,应首先声明具有宏的模块。它还应该附加
#[macro\u use]
属性。这应该起作用:

#[macro_use] mod b;
mod a;
#[macro_use]
属性使模块中的宏对模块声明“下方”的所有代码可见,这就是原始变体无法工作的原因