摘要:
前言 上图中间部分为 Rust 代码的整体编译过程,左右两边分别为过程宏和声明宏的解释过程。 Rust 语言是基于 LLVM 后端实现的编程语言。在编译器层面来说,Rust编译器仅仅是一个编译器前端,它负责从文本代码一步步编译到LLVM中间码(LLVM IR),然后再交给LLVM来最终编译生成机器码 阅读全文
摘要:
前言 声明式宏(Declarative macros)使得你能够写出类似 match 表达式的东西,来操作你所提供的 Rust 代码。它使用你提供的代码来生成用于替换宏调用的代码。 语法 宏通过使用macro_rules!来声明,最为常见的一个声明式宏就是println!。 macro_rules! 阅读全文
摘要:
前言 过程宏(Procedural macros)允许你操作给定 Rust 代码的抽象语法树(abstract syntax tree, AST)。过程宏是从一个(或者两个)TokenStream到另一个TokenStream的函数,用输出的结果来替换宏调用。 工具准备 安装cargo-expand 阅读全文