8

我正在试验Rust Edition 2018。在 Rust 2015 中,您使用

#[macro_use]
extern crate log;

用于导入宏。在 Rust 2018extern crate中可能是单调的。有没有办法从板条箱中导入所有宏而不使用extern crate?对于简单的宏,在模块中导入就可以了,但复杂的宏依赖于其他几个宏,这很不方便。

4

2 回答 2

7

我没有看到任何导入所有宏的方法,但如果你可以导入 crate 提供的所有基本对象,你通常应该通过以下方式获取所有宏:

use the_crate_with_macros::*;

或者

use the_crate_with_macros::prelude::*; // if available

从版本 1.30 开始,这也适用于 Rust 2015。

于 2018-06-23T10:09:42.827 回答
4

正如您已经说过的,您可以通过

use foo::mac1;

要一次导入多个宏,您可以使用嵌套导入

use foo::{mac1, mac2, mac3};

或者依靠 crate 作者,他们会让您通过单个 glob 导入它,例如

use foo::macros::*;
于 2018-10-29T14:20:54.487 回答