Skip to content

Rust 编译器与运行时揭秘

第一本从编译器视角系统拆解 Rust 语言核心机制的中文技术专著。

Rust 开发者每天都在使用所有权、借用、trait、async/await——但极少有人真正理解这些机制在编译器内部是如何实现的。为什么 borrow checker 能在编译期捕获悬垂引用?为什么 async fn 的返回值大小在编译期就能确定?为什么泛型函数调用没有运行时开销?

本书不教 Rust 语法。本书拆解 Rust 的编译器行为和运行时机制——从源码到 HIR、MIR、LLVM IR 再到机器码的完整链路中,每一个关键特性是如何被实现的。每一章聚焦一个核心机制,用"你写的代码"与"编译器生成的产物"对照的方式,让你真正理解 Rust 零成本抽象背后的工程实现。

这是 Rust 后端系列的第一本书。理解了 Rust 本身的编译期和运行时机制,后续阅读 Tokio、Axum、Pingora、MeiliSearch、TiKV 等项目的源码时,你将不会在任何 trait bound、lifetime、Pin 上卡住。

适合谁读

  • Rust 开发者:已经能写 Rust 代码,但想理解编译器"在背后做了什么"
  • 系统程序员:从 C/C++/Go 转向 Rust,想理解所有权模型和零成本抽象的实现原理
  • 语言设计爱好者:对编程语言的编译期分析、类型系统、代码生成感兴趣
  • 后端工程师:准备深入 Tokio、Axum 等 Rust 生态项目源码,需要先打好语言层面的基础

目录

开篇

第二部分:所有权与内存

第三部分:类型系统与泛型

第四部分:异步机制

第五部分:闭包、unsafe 与 FFI

第六部分:宏与元编程

第七部分:编译器后端与优化

第八部分:总结

源码版本

本书分析基于 Rust 1.88 stable(2026 年 4 月)和对应的 rustc 编译器源码。涉及的 MIR、LLVM IR 等中间表示均通过 cargo rustc -- --emit=mir--emit=llvm-ir 等工具实际生成,读者可以自行验证。

版权声明

本书采用 CC BY-NC 4.0 许可协议。转载或引用请署名 杨艺韬 并附原文链接,禁止商业用途。

基于 VitePress 构建