我相信这很容易做到,但我似乎无法使其正常工作。
我查看了http://doc.rust-lang.org/book/advanced-macros.html#scoping-and-macro-import/export,一般来说,使用宏的方法是定义它们:
#[macro_export]
macro_rules! background(($token:expr) => (($token >> (32 + 8)) & $crate::graphics::mask::Color));
然后使用以下方式将它们导入到另一个上下文中:
#[macro_use]
extern crate terminal;
...
然而,我想要做的是在定义宏的包内使用这些宏。
如果我的文件结构如下:
- lib.rs
- macros.rs
- foo
- foo/mod.rs
- foo/junk.rs
我该如何在junk.rs中使用macros.rs中的宏?
我已经尝试过各种组合,例如#[macro_use] mod macros
等,但都没有成功。文档建议如果一个宏在某个作用域中定义,则它在所有子模块中都可用...这是否意味着我必须在lib.rs中定义我的宏?