2015-04-04 6 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] атрибут делает макросы из модуля видимого для всего кода «ниже» декларации модуля, поэтому ваш оригинальный вариант не мог работать.

Смежные вопросы