DANDAN LEARN / Rust
从语法到工程实践
从所有权、借用、生命周期这些"硬核概念"出发,一路学到 async/await、Cargo 工程化、错误处理与性能调优——把 Rust 写成能长期维护的工程代码。
Learning goals
Put principles into practice.
- 理解所有权、借用与类型系统
- 学习错误处理、并发与异步编程
- 结合测试、工具链和实践章节组织工程
Who this is for
- 希望学习 Rust 与可靠系统编程的读者
Prerequisites
- 入门章节从安装开始;有其他语言经验会更容易理解进阶主题
A closer look
A few chapters to start with
Jump to a chapter 8 chapters
序言
入门与基础
- 关于本书Member article
- 进入 Rust 编程世界Member article
- 寻找牛刀,以便小试Member article
- 安装 Rust 环境Member article
- 认识 CargoMember article
- 墙推 VSCodeMember article
- 不仅仅是 Hello worldMember article
- 下载依赖太慢了Member article
- 避免从入门到放弃Member article
- Rust 基础入门Member article
- 变量绑定与解构Member article
- 基本类型Member article
- 数值类型Member article
- 字符、布尔、单元类型Member article
- 语句与表达式Member article
- 函数Member article
- 所有权和借用Member article
- 引用与借用Member article
- 所有权深入Member article
基础语法与实战
- 复合类型Member article
- 字符串与切片Member article
- 元组Member article
- 结构体Member article
- 枚举Member article
- 数组Member article
- 流程控制Member article
- 模式匹配Member article
- match 和 if letMember article
- 解构 OptionMember article
- 全模式列表Member article
- 模式适用场景Member article
- 集合类型Member article
- 动态数组 VectorMember article
- KV 存储 HashMapMember article
- 认识生命周期Member article
- 方法 MethodMember article
- 泛型和特征Member article
- 泛型 GenericsMember article
- 特征 TraitMember article
- 特征对象Member article
- 进一步深入特征Member article
- 注释和文档Member article
- 包和模块Member article
- 包 CrateMember article
- 模块 ModuleMember article
- 使用 use 引入模块及受限可见性Member article
- 格式化输出Member article
- 返回值和错误处理Member article
- panic! 深入剖析Member article
- 返回值 Result 和 ?Member article
- 入门实战:文件搜索工具Member article
- 基本功能Member article
- 测试驱动开发Member article
- 使用环境变量Member article
- 重定向错误信息的输出Member article
- 增加模块化和错误处理Member article
- 使用迭代器来改进程序(可选)Member article
高级进阶
- Rust 高级进阶Member article
- 生命周期Member article
- &'static 和 T: 'staticMember article
- 深入生命周期Member article
- 函数式编程:闭包、迭代器Member article
- 闭包 ClosureMember article
- 迭代器 IteratorMember article
- 深入类型Member article
- newtype 和类型别名Member article
- Sized 和不定长类型 DSTMember article
- 枚举和整数Member article
- 类型转换Member article
- 智能指针Member article
- Box<T> 堆对象分配Member article
- Deref 解引用Member article
- Drop 释放资源Member article
- Rc 与 Arc 实现 1vN 所有权机制Member article
- Cell 与 RefCell 内部可变性Member article
- 循环引用与自引用Member article
- 结构体中的自引用Member article
- Weak 与循环引用Member article
- 错误处理Member article
- 全局变量Member article
- Macro 宏编程Member article
- 多线程并发编程Member article
- 使用多线程Member article
- 并发和并行Member article
- 线程同步:消息传递Member article
- 线程同步:锁、Condvar 和信号量Member article
- 线程同步:Atomic 原子操作与内存顺序Member article
- 基于 Send 和 Sync 的线程安全Member article
- Unsafe RustMember article
- 五种兵器Member article
- 内联汇编Member article
- Rust 难点攻关Member article
- String、&str 和 strMember article
- 切片和切片引用Member article
- Eq 和 PartialEqMember article
- move、Copy 和 CloneMember article
- 作用域、生命周期和 NLLMember article
异步与并发
- async 编程入门Member article
- async/await 异步编程Member article
- async/await 和 Stream 流处理Member article
- 底层探秘:Future 执行与任务调度Member article
- 定海神针 Pin 和 UnpinMember article
- 同时运行多个 FutureMember article
- 一些疑难问题的解决办法Member article
- 实践应用:Async Web 服务器Member article
- 进阶实战1:实现一个 web 服务器Member article
- 单线程版本Member article
- 多线程版本Member article
- 优雅关闭和资源清理Member article
- 进阶实战2:实现一个简单 RedisMember article
- 使用初印象Member article
- tokio 概览Member article
- 深入 asyncMember article
- 创建异步任务Member article
- 共享状态Member article
- 类似迭代器的 StreamMember article
- 消息传递Member article
- 异步跟同步共存Member article
- I/OMember article
- selectMember article
- 解析数据帧Member article
- 优雅的关闭Member article
测试、工具链与工程实践
- 自动化测试Member article
- 编写测试及控制执行Member article
- 单元测试和集成测试Member article
- 断言 assertionMember article
- 基准测试 benchmarkMember article
- 用 GitHub Actions 进行持续集成Member article
- Cargo 使用指南Member article
- 为何会有 CargoMember article
- 上手使用Member article
- 基础指南Member article
- Package 目录结构Member article
- Cargo.toml vs Cargo.lockMember article
- 添加依赖Member article
- 下载并构建 PackageMember article
- 测试和 CIMember article
- Cargo 缓存Member article
- Build 缓存Member article
- 进阶指南Member article
- Cargo.toml 清单详解Member article
- 指定依赖项Member article
- 依赖覆盖Member article
- Cargo TargetMember article
- 工作空间 WorkspaceMember article
- 条件编译 FeaturesMember article
- Features 示例Member article
- 构建脚本 build.rsMember article
- 构建脚本示例Member article
- 发布配置 ProfileMember article
- 发布到 crates.ioMember article
- 通过 config.toml 对 Cargo 进行配置Member article
- 日志和监控Member article
- 日志门面 logMember article
- 使用 tracing 记录日志Member article
- 自定义 tracing 的输出格式Member article
- 日志详解Member article
- 监控Member article
- 可观测性Member article
- 分布式追踪Member article
- 企业落地实践Member article
- AWS 为何这么喜欢 RustMember article
- Rust 最佳实践Member article
- 代码开发实践Member article
- 命名规范Member article
- 日常开发三方库精选Member article
- 面试经验Member article
实战:链表 / 错误 / 性能
- 为什么链表这么难Member article
- 需要链表吗Member article
- 不太优秀的单向链表:栈Member article
- 数据布局Member article
- 基本操作Member article
- 最后实现Member article
- 还可以的双向链表:双端队列Member article
- 数据布局Member article
- 迭代器Member article
- PeekMember article
- 更优雅的实现Member article
- 最后实现Member article
- 超棒的实现Member article
- 类型Member article
- 迭代器Member article
- 可变的迭代器Member article
- PeekMember article
- 性能足够好的单向链表Member article
- 数据布局Member article
- 在 Drop 中检查偷懒Member article
- Rust 常见错误Member article
- Rust 错误处理心法Member article
- 与借用相关:闭包Member article
- 与借用相关:循环Member article
- 与借用相关:长久的迭代Member article
- 与借用相关:繁冗的迭代Member article
- 与生命周期相关:函数Member article
- 与生命周期相关:结构体Member article
- 与生命周期相关:闭包Member article
- Rust 中的坑Member article
- 算术溢出Member article
- 字符与字符串Member article
- 栈与堆Member article
- Vec 与切片Member article
- 迭代器Member article
- 范围(Range)Member article
- Send / SyncMember article
- 可变变量绑定Member article
- ChannelMember article
- 闭包Member article
- LazyMember article
- Rust 性能调优Member article
- 深入性能Member article
- 编译优化Member article
- Move 与 CopyMember article
- String 与 &strMember article
- 性能中的内存Member article
更多文章
Reading and learning support
Forewords are public. Other chapters require access to the column or the whole library.
Overview reviewed on