01-语法
语法 — Rust By Example
macro_rules! 来创建宏 — Rust By Example2 分钟阅读
译文 · 基于 Rust By Example
原文链接: https://doc.rust-lang.org/stable/rust-by-example/macros.html
macro_rules! 来创建宏Rust 提供了一个强大的宏系统,可进行元编程(metaprogramming)。你已经在前面的章节中看到,宏看起来和函数很像,只不过名称末尾有一个感叹号 ! 。宏并不产生函数调用,而是展开成源码,并和程序的其余部分一起被编译。Rust 又有一点和 C
以及其他语言都不同,那就是 Rust 的宏会展开为抽象语法树(AST,abstract syntax
tree),而不是像字符串预处理那样直接替换成代码,这样就不会产生无法预料的优先权错误。
宏是通过 macro_rules! 宏来创建的。
| |
为什么宏是有用的?
println!,根据格式化字符串的不同,它需要接受任意多的参数(稍后详述)。语法 — Rust By Example
DRY (不写重复代码) — Rust By Example
DSL (领域专用语言) — Rust By Example
可变参数接口 — Rust By Example