2015-04-04 31 views
1

使用微距我建立一個圖書館,我有以下結構:在不同的文件

的src/lib.rs

mod a; 
mod b; 

的src/b.rs:

macro_rules! x ... 

src/a.rs:

x!() 

這不起作用。我試圖撥弄#macro_export#macro_use但沒有成功。在同一個庫中但在不同的模塊和文件中重新使用宏的正確方法是什麼?

回答

2

爲了從子模塊宏是他們有一定的順序被宣佈「兄弟姐妹」的模塊可見,也就是用宏模塊應被宣佈第一。它也應該有#[macro_use]屬性附加。這應該工作:

#[macro_use] mod b; 
mod a; 

#[macro_use]屬性使得宏從模塊到「下面」的模塊聲明的所有代碼可見,這就是爲什麼你原來的變異不可能工作。

相關問題