- 简介
- 1. Hello World
- 1.1. 注释
- 1.2. 格式化输出
- 1.2.1. 调试(debug)
- 1.2.2. 显示(display)
- 1.2.3. 测试实例:List
- 1.2.4. 格式化
- 2. 原生类型
- 2.1. 字面量和运算符
- 2.2. 元组
- 2.3. 数组和切片
- 3. 自定义类型
- 3.1. 结构体
- 3.2. 枚举
- 3.2.1. 使用 use
- 3.2.2. C 风格用法
- 3.2.3. 测试实例:链表
- 3.3. 常量
- 4. 变量绑定
- 4.1. 可变变量
- 4.2. 作用域和遮蔽
- 4.3. 变量先声明
- 4.4. 冻结
- 5. 类型系统
- 5.1. 类型转换
- 5.2. 字面量
- 5.3. 类型推断
- 5.4. 别名
- 6. 类型转换
- 6.1. From 和 Into
- 6.2. TryFrom 和 TryInto
- 6.3. ToString 和 FromStr
- 7. 表达式
- 8. 流程控制
- 8.1. if/else
- 8.2. loop 循环
- 8.2.1. 嵌套循环和标签
- 8.2.2. 从 loop 循环返回
- 8.3. while 循环
- 8.4. for 循环和区间
- 8.5. match 匹配
- 8.5.1. 解构
- 8.5.1.1. 元组
- 8.5.1.2. 数组/切片
- 8.5.1.3. 枚举
- 8.5.1.4. 指针和引用
- 8.5.1.5. 结构体
- 8.5.2. 卫语句
- 8.5.3. 绑定
- 8.6. if let
- 8.7. while let
- 9. 函数
- 9.1. 方法
- 9.2. 闭包
- 9.2.1. 捕获
- 9.2.2. 作为输入参数
- 9.2.3. 类型匿名
- 9.2.4. 输入函数
- 9.2.5. 作为输出参数
- 9.2.6. std 中的例子
- 9.2.6.1. Iterator::any
- 9.2.6.2. Iterator::find
- 9.3. 高阶函数
- 9.4. 发散函数
- 10. 模块
- 10.1. 可见性
- 10.2. 结构体的可见性
- 10.3. use 声明
- 10.4. super 和 self
- 10.5. 文件分层
- 11. crate
- 11.1. 库
- 11.2. 使用库
- 12. cargo
- 12.1. 依赖
- 12.2. 约定规范
- 12.3. 测试
- 12.4. 构建脚本
- 13. 属性
- 13.1. 死代码 dead_code
- 13.2. crate
- 13.3. cfg
- 13.3.1. 自定义条件
- 14. 泛型
- 14.1. 函数
- 14.2. 实现
- 14.3. trait
- 14.4. 约束
- 14.4.1. 测试实例:空约束
- 14.5. 多重约束
- 14.6. where 子句
- 14.7. newtype 惯用法
- 14.8. 关联项
- 14.8.1. 存在问题
- 14.8.2. 关联类型
- 14.9. 虚类型参数
- 14.9.1. 测试实例:单位检查
- 15. 作用域规则
- 15.1. RAII
- 15.2. 所有权和移动
- 15.2.1. 可变性
- 15.2.2. 部分移动
- 15.3. 借用
- 15.3.1. 可变性
- 15.3.2. 别名使用
- 15.3.3. ref 模式
- 15.4. 生命周期
- 15.4.1. 显式标注
- 15.4.2. 函数
- 15.4.3. 方法
- 15.4.4. 结构体
- 15.4.5. trait
- 15.4.6. 约束
- 15.4.7. 强制转换
- 15.4.8. static
- 15.4.9. 省略
- 16. 特质 trait
- 16.1. 派生
- 16.2. 使用 dyn 返回 trait
- 16.3. 运算符重载
- 16.4. Drop
- 16.5. Iterator
- 16.6. impl Trait
- 16.7. Clone
- 16.8. 父 trait
- 16.9. 消除重叠 trait
- 17. 使用 macro_rules! 来创建宏
- 17.1. 语法
- 17.1.1. 指示符
- 17.1.2. 重载
- 17.1.3. 重复
- 17.2. DRY (不写重复代码)
- 17.3. DSL (领域专用语言)
- 17.4. 可变参数接口
- 18. 错误处理
- 18.1. panic
- 18.2. Option 和 unwrap
- 18.2.1. 使用 ? 解开 Option
- 18.2.2. 组合算子:map
- 18.2.3. 组合算子:and_then
- 18.3. 结果 Result
- 18.3.1. Result 的 map
- 18.3.2. 给 Result 取别名
- 18.3.3. 提前返回
- 18.3.4. 引入 ?
- 18.4. 处理多种错误类型
- 18.4.1. 从 Option 中取出 Result
- 18.4.2. 定义一种错误类型
- 18.4.3. 把错误 “装箱”
- 18.4.4. ? 的其他用法
- 18.4.5. 包裹错误
- 18.5. 遍历 Result
- 19. 标准库类型
- 19.1. 箱子、栈和堆
- 19.2. 动态数组 vector
- 19.3. 字符串 String
- 19.4. 选项 Option
- 19.5. 结果 Result
- 19.5.1. ? 用法
- 19.6. panic!
- 19.7. 散列表 HashMap
- 19.7.1. 更改或自定义关键字类型
- 19.7.2. 散列集 HashSet
- 19.8. 引用计数 Rc
- 19.9. 共享引用计数 Arc
- 20. 标准库更多介绍
- 20.1. 线程
- 20.1.1. 测试实例:map-reduce
- 20.2. 通道
- 20.3. 路径
- 20.4. 文件输入输出(I/O)
- 20.4.1. 打开文件 open
- 20.4.2. 创建文件 create
- 20.4.3. 读取行 read lines
- 20.5. 子进程
- 20.5.1. 管道
- 20.5.2. 等待
- 20.6. 文件系统操作
- 20.7. 程序参数
- 20.7.1. 参数解析
- 20.8. 外部语言函数接口
- 21. 测试
- 21.1. 单元测试
- 21.2. 文档测试
- 21.3. 集成测试
- 21.4. 开发依赖
- 22. 不安全操作
- 23. 兼容性
- 23.1. 原始标志符
- 24. 补充
- 24.1. 文档
- 24.2. Playpen