Rust 1.7.0 macro宏的复用 #[macro_use]的用法

释放双眼,带上耳机,听听看~!

Rust 1.7.0 中的宏使用范围包括三种情况:
第一种情况是宏定义在当前文件中,这个文件可能是 crate 默认的 module,也可能是任意的 module 模块。
第二种情况是宏定义在当前 crate ,但是不是在当前文件中,而是其他 module 模块中。
第三种情况是宏定义在其他的 crate 中,或者其他的 crate 子模块中。

使用#[macro_use] 可以使被注解的module模块中的宏应用到当前作用域中;或者注释crate中的宏应用到当前crate作用域中。

第一种情况的例子:

第二种情况:

  • 先创建一个新文件 macros.rs ,定义一个宏 say_bonjour

  • 使用

  • 如果没有 #[macro_use] 编译会出现

error: macro undefined: ‘say_bonjour!’

第三种情况:注释在外部 crate 的语句

创建 log 项目


1
2
1cargo new log
2

在 log 项目中,lib.rs 是入口,在lib.rs中定义 macors 模块。

然后,创建对应mod macros 的 macros.rs 文件 vi src/macros.rs
声明宏 log、error、warn、info,在每个宏定义前面添加 #[macro_export]注释,表示这些宏可以被外部的 crate 使用。

使用:引入 log crate的时候,注明#[macro_use]

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++ 高性能服务器网络框架设计细节

2022-1-11 12:36:11

安全资讯

继小额贷款牌照后 美团点评再获银行牌照

2016-12-27 7:35:23

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索