在不同的文件中使用宏
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" 模块声明,这就是为什么您的原始变体无法工作的原因。
我正在构建一个库,我有以下结构:
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" 模块声明,这就是为什么您的原始变体无法工作的原因。