Rust 语言圣经
进入 Rust 编程世界
快速查询入口
Rust 语言中文网
一本生锈的书
Rust 语言周刊
Rust 翻译计划( 代号 Rustt )
快速开始
1.
寻找牛刀,以便小试
❱
1.1.
安装 Rust 环境
1.2.
墙推 VSCode!
1.3.
认识 Cargo
1.4.
不仅仅是 Hello world
1.5.
下载依赖太慢了?
1.6.
避免从入门到放弃
Rust 语言学习
2.
Rust 基础入门
❱
2.1.
变量绑定与解构
2.2.
基本类型
❱
2.2.1.
数值类型
2.2.2.
字符、布尔、单元类型
2.2.3.
语句与表达式
2.2.4.
函数
2.3.
所有权和借用
❱
2.3.1.
所有权
2.3.2.
引用与借用
2.4.
复合类型
❱
2.4.1.
字符串与切片
2.4.2.
元组
2.4.3.
结构体
2.4.4.
枚举
2.4.5.
数组
2.5.
流程控制
2.6.
模式匹配
❱
2.6.1.
match 和 if let
2.6.2.
解构 Option
2.6.3.
模式适用场景
2.6.4.
全模式列表
2.7.
方法 Method
2.8.
泛型和特征
❱
2.8.1.
泛型 Generics
2.8.2.
特征 Trait
2.8.3.
特征对象
2.8.4.
进一步深入特征
2.9.
集合类型
❱
2.9.1.
动态数组 Vector
2.9.2.
KV 存储 HashMap
2.10.
类型转换
2.11.
返回值和错误处理
❱
2.11.1.
panic! 深入剖析
2.11.2.
返回值 Result 和?
2.12.
包和模块
❱
2.12.1.
包 Crate
2.12.2.
模块 Module
2.12.3.
使用 use 引入模块及受限可见性
2.13.
注释和文档
2.14.
格式化输出
3.
Rust 高级进阶
❱
3.1.
生命周期
❱
3.1.1.
认识生命周期
3.1.2.
深入生命周期
3.1.3.
&'static 和 T: 'static
3.2.
函数式编程: 闭包、迭代器
❱
3.2.1.
闭包 Closure
3.2.2.
迭代器 Iterator
3.3.
深入类型
❱
3.3.1.
newtype 和 类型别名
3.3.2.
Sized 和不定长类型 DST
3.3.3.
枚举和整数
3.4.
智能指针
❱
3.4.1.
Box堆对象分配
3.4.2.
Deref 解引用
3.4.3.
Drop 释放资源
3.4.4.
Rc 与 Arc 实现 1vN 所有权机制
3.4.5.
Cell 与 RefCell 内部可变性
3.5.
循环引用与自引用
❱
3.5.1.
Weak 与循环引用
3.5.2.
结构体中的自引用
3.6.
多线程并发编程
❱
3.6.1.
并发和并行
3.6.2.
使用多线程
3.6.3.
线程同步:消息传递
3.6.4.
线程同步:锁、Condvar 和信号量
3.6.5.
线程同步:Atomic 原子操作与内存顺序
3.6.6.
基于 Send 和 Sync 的线程安全
3.6.7.
实践应用:多线程 Web 服务器 todo
3.7.
全局变量
3.8.
错误处理
3.9.
Unsafe Rust
❱
3.9.1.
五种兵器
3.9.2.
内联汇编 todo
3.10.
Macro 宏编程
4.
Rust 异步编程
❱
4.1.
async/await 异步编程
❱
4.1.1.
async 编程入门
4.1.2.
底层探秘: Future 执行与任务调度
4.1.3.
定海神针 Pin 和 Unpin
4.1.4.
async/await 和 Stream 流处理
4.1.5.
同时运行多个 Future
4.1.6.
一些疑难问题的解决办法
4.1.7.
实践应用:Async Web 服务器
4.2.
Tokio 使用指南
❱
4.2.1.
tokio 概览
4.2.2.
使用初印象
4.2.3.
创建异步任务
4.2.4.
共享状态
4.2.5.
消息传递
4.2.6.
I/O
4.2.7.
解析数据帧
4.2.8.
深入 async
4.2.9.
select
4.2.10.
类似迭代器的 Stream
4.2.11.
优雅的关闭
4.2.12.
异步跟同步共存
5.
Rust 难点攻关
❱
5.1.
切片和切片引用
5.2.
Eq 和 PartialEq
5.3.
String、&str 和 str TODO
5.4.
作用域、生命周期和 NLL TODO
5.5.
move、Copy 和 Clone TODO
5.6.
裸指针、引用和智能指针 TODO
常用工具链
6.
自动化测试
❱
6.1.
编写测试及控制执行
6.2.
单元测试和集成测试
6.3.
断言 assertion
6.4.
用 GitHub Actions 进行持续集成
6.5.
基准测试 benchmark
7.
Cargo 使用指南
❱
7.1.
上手使用
7.2.
基础指南
❱
7.2.1.
为何会有 Cargo
7.2.2.
下载并构建 Package
7.2.3.
添加依赖
7.2.4.
Package 目录结构
7.2.5.
Cargo.toml vs Cargo.lock
7.2.6.
测试和 CI
7.2.7.
Cargo 缓存
7.2.8.
Build 缓存
7.3.
进阶指南
❱
7.3.1.
指定依赖项
7.3.2.
依赖覆盖
7.3.3.
Cargo.toml 清单详解
7.3.4.
Cargo Target
7.3.5.
工作空间 Workspace
7.3.6.
条件编译 Features
❱
7.3.6.1.
Features 示例
7.3.7.
发布配置 Profile
7.3.8.
通过 config.toml 对 Cargo 进行配置
7.3.9.
发布到 crates.io
7.3.10.
构建脚本 build.rs
❱
7.3.10.1.
构建脚本示例
开发实践
8.
企业落地实践
❱
8.1.
AWS 为何这么喜欢 Rust?
9.
日志和监控
❱
9.1.
日志详解
9.2.
日志门面 log
9.3.
使用 tracing 记录日志
9.4.
自定义 tracing 的输出格式
9.5.
监控
❱
9.5.1.
可观测性
9.5.2.
分布式追踪
10.
Rust 最佳实践
❱
10.1.
日常开发三方库精选
10.2.
命名规范
10.3.
面试经验
10.4.
代码开发实践 todo
11.
手把手带你实现链表
❱
11.1.
我们到底需不需要链表
11.2.
不太优秀的单向链表:栈
❱
11.2.1.
数据布局
11.2.2.
基本操作
11.2.3.
最后实现
11.3.
还可以的单向链表
❱
11.3.1.
优化类型定义
11.3.2.
定义 Peek 函数
11.3.3.
IntoIter 和 Iter
11.3.4.
IterMut 以及完整代码
11.4.
持久化单向链表
❱
11.4.1.
数据布局和基本操作
11.4.2.
Drop、Arc 及完整代码
11.5.
不咋样的双端队列
❱
11.5.1.
数据布局和基本操作
11.5.2.
Peek
11.5.3.
基本操作的对称镜像
11.5.4.
迭代器
11.5.5.
最终代码
11.6.
不错的 unsafe 队列
❱
11.6.1.
数据布局
11.6.2.
基本操作
11.6.3.
Miri
11.6.4.
栈借用
11.6.5.
测试栈借用
11.6.6.
数据布局 2
11.6.7.
额外的操作
11.6.8.
最终代码
11.7.
使用高级技巧实现链表
❱
11.7.1.
生产级可用的双向链表
11.7.2.
双单向链表
11.7.3.
栈上的链表
高级专题
12.
征服编译错误
❱
12.1.
对抗编译检查
❱
12.1.1.
生命周期
❱
12.1.1.1.
生命周期过大-01
12.1.1.2.
生命周期过大-02
12.1.1.3.
循环中的生命周期
12.1.1.4.
闭包碰到特征对象-01
12.1.2.
重复借用
❱
12.1.2.1.
同时在函数内外使用引用
12.1.2.2.
智能指针引起的重复借用错误
12.1.3.
类型未限制(todo)
12.1.4.
幽灵数据(todo)
12.2.
Rust 常见陷阱
❱
12.2.1.
for 循环中使用外部数组
12.2.2.
线程类型导致的栈溢出
12.2.3.
算术溢出导致的 panic
12.2.4.
闭包中奇怪的生命周期
12.2.5.
可变变量不可变?
12.2.6.
可变借用失败引发的深入思考
12.2.7.
不太勤快的迭代器
12.2.8.
奇怪的序列 x..y
12.2.9.
无处不在的迭代器
12.2.10.
线程间传递消息导致主线程无法结束
12.2.11.
警惕 UTF-8 引发的性能隐患
13.
Rust 性能优化 todo
❱
13.1.
深入内存 todo
❱
13.1.1.
指针和引用 todo
13.1.2.
未初始化内存 todo
13.1.3.
内存分配 todo
13.1.4.
内存布局 todo
13.1.5.
虚拟内存 todo
13.2.
性能调优 doing
❱
13.2.1.
字符串操作性能
13.2.2.
深入理解 move
13.2.3.
糟糕的提前优化 todo
13.2.4.
Clone 和 Copy todo
13.2.5.
减少 Runtime check(todo)
13.2.6.
CPU 缓存性能优化 todo
13.2.7.
计算性能优化 todo
13.2.8.
堆和栈 todo
13.2.9.
内存 allocator todo
13.2.10.
常用性能测试工具 todo
13.2.11.
Enum 内存优化 todo
13.3.
编译优化 todo
❱
13.3.1.
LLVM todo
13.3.2.
常见属性标记 todo
13.3.3.
提升编译速度 todo
13.3.4.
编译器优化 todo
❱
13.3.4.1.
Option 枚举 todo
14.
标准库解析 todo
❱
14.1.
标准库使用最佳时间 todo
14.2.
Vector 常用方法 todo
14.3.
HashMap todo
14.4.
Iterator 常用方法 todo
附录
15.
Appendix
❱
15.1.
关键字
15.2.
运算符与符号
15.3.
表达式
15.4.
派生特征 trait
15.5.
prelude 模块 todo
15.6.
Rust 版本说明
15.7.
Rust 历次版本更新解读
❱
15.7.1.
1.58
15.7.2.
1.59
15.7.3.
1.60
15.7.4.
1.61
15.7.5.
1.62
Light (default)
Rust
Coal
Navy
Ayu
Rust语言圣经(Rust Course)
Enum内存优化 todo
https://blog.zhuangty.com/rust-enum-layout/