07-标准库中的内置宏
9.5 标准库中的内置宏
除了println!宏之外,标准库中还有很多其他非常有用的宏,它们是通过macro_rules!宏实现的。了解它们将有助于我们以更简洁的方式提供宏应用的解决方案和了解宏的应用场景,同时不牺牲可读性。
其中一些宏如下所示。
- dbg!:此宏允许你使用它们的值输出表达式的值。此宏会移动传递给它的任何内容,因此如果你只想提供对其类型的读取权限,那么需要传递对此宏的引用。它作为运行时表达式的跟踪宏会非常方便。
- compile_error!:此宏可用于在编译期从代码中报告错误。当你构建自己的宏,并希望向用户报告任何语法或语义错误时,这是一个方便的选择。
- concat!:此宏可以用来链接传递给它的任意数量的文字,并将链接的文字作为&'static str返回。
- env!:此宏用于检查编译期的环境变量。在很多语言中,从环境变量访问值主要是在运行时完成的。在Rust中,通过使用此宏,你可以在编译期解析环境变量。请注意,当找不到定义的变量时,此宏会引发灾难性故障。因此安全版本的宏是option_env!。
- eprint!和eprintln!:此宏与println!类似,不过会将消息输出到标准异常流。
- include_bytes!:此宏可以作为一种将文件读取为字节数组的快捷方式,例如 &'static [u8; N]。给定的文件路径是相对于调用此宏的当前文件解析获得的。
- stringify!:如果希望获得类型或标记作为字符串的字面转换,那么此宏将会非常有用。当我们编写自己的过程宏时,将会用到它。
如果想要了解标准库中可用的所有宏,可以访问官方文档。