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

Rust By Example

解构

match 块可以以多种方式解构项。

  • 解构元组
  • 解构数组和切片
  • 解构枚举
  • 解构指针
  • 解构结构体