无法导入/导出宏

时间:2015-03-20 20:42:12

标签: macros rust

我有一个名为macros.rs的模块,其中包含

/// Macro to easily implement FromError.
/// from_error!(MyError, IoError, MyError::IoError)
macro_rules! from_error {
    ( $t:ty, $err:ty, $name:path ) => {
        use std;
        impl std::error::FromError<$err> for $t {
            fn from_error(err: $err) -> $t {
                $name(err)
            }
        }
    }
}

在我main.rs我导入模块

#[macro_use] mod macros;

当我尝试在项目的其他模块中使用from_error时,编译器会说error: macro undefined: 'from_error!'

1 个答案:

答案 0 :(得分:9)

事实证明,宣布模块的顺序很重要。

mod json; // json uses macros from the "macros" module. can't find them.
#[macro_use]
mod macros;

#[macro_use]
mod macros;
mod json; // json uses macros from the "macros" module. everything's ok this way.