在不同的文件中使用宏

时间:2015-04-04 04:10:27

标签: module macros rust

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

src / lib.rs

mod a;
mod b;

的src / b.rs:

macro_rules! x ...

的src / a.rs:

x!()

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

1 个答案:

答案 0 :(得分:3)

为了使子模块中的宏对“兄弟”模块可见,它们必须按特定顺序声明,也就是说,应该将具有宏的模块声明为第一个。它还应附加#[macro_use]属性。这应该有效:

#[macro_use] mod b;
mod a;

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