- 引言
- 1. 了解 Safe 和 Unsafe
- 1.1. Safe 和 Unsafe 如何交互
- 1.2. Unsafe 能做什么
- 1.3. 使用 Unsafe
- 2. 数据布局
- 2.1. repr(Rust)
- 2.2. 特殊大小的类型
- 2.3. 其他 repr
- 3. 所有权
- 3.1. 引用
- 3.2. 别名
- 3.3. 生命周期
- 3.4. 生命周期的局限性
- 3.5. 生命周期省略
- 3.6. 无界生命周期
- 3.7. 高阶 Trait 约束
- 3.8. 子类型和协变/逆变
- 3.9. Drop 检查
- 3.10. PhantomData
- 3.11. 拆分借用
- 4. 类型转换
- 4.1. 强制转换
- 4.2. 点运算符
- 4.3. 显式转换
- 4.4. 内存强制转换
- 5. 未初始化的内存
- 5.1. 已检查
- 5.2. Drop 标记
- 5.3. 未检查
- 6. 基于所有权的资源管理
- 6.1. 构造函数
- 6.2. 析构函数
- 6.3. 泄漏
- 7. 栈展开
- 7.1. 异常安全
- 7.2. 毒化
- 8. 并发
- 8.1. 竞争条件
- 8.2. Send 和 Sync
- 8.3. 原子操作
- 9. 实现 Vec
- 9.1. 布局
- 9.2. 分配
- 9.3. push 和 pop
- 9.4. 解除分配
- 9.5. Deref
- 9.6. 插入和移除
- 9.7. IntoIter
- 9.8. RawVec
- 9.9. Drain
- 9.10. 处理零大小类型
- 9.11. 最终代码
- 10. 实现 Arc 和 Mutex
- 10.1. Arc
- 10.1.1. 布局
- 10.1.2. 基础代码
- 10.1.3. 克隆
- 10.1.4. Drop 操作
- 10.1.5. 最终代码
- 11. FFI
- 12. std 库底层
- 12.1. #[panic_handler]