有没有办法在测试期间从外部包装箱导入宏,没有任何警告?

时间:2018-03-19 14:26:51

标签: rust

我有类似的东西:

#[macro_use] extern crate log;

pub fn do_nothing() { let _ = log::Level::Info; }

#[cfg(test)]
mod tests {
    #[test]
    fn test_a() { debug!("Message."); }
}

这会发出警告:

warning: unused `#[macro_use]` import

如果删除宏导入,请将第1行更改为:

extern crate log;

然后我在编译时遇到以下错误:

error: cannot find macro `debug!` in this scope

如果我然后尝试仅为测试模块导入宏,即:

extern crate log;

pub fn do_nothing() { let _ = log::Level::Info; }

#[cfg(test)]

mod tests {
    #[macro_use] extern crate log;
    #[test]
    fn test_a() { debug!("Message."); }
}

然后我收到编译器错误:

error[E0468]: an `extern crate` loading macros must be at the crate root

是否有解决方案可以避免所有警告,而不仅仅是抑制它们?

1 个答案:

答案 0 :(得分:9)