# 模式与匹配

*模式，patterns* 属于 Rust 中的一种特殊语法，用于匹配简单和复杂的类型结构。与 `match` 表达式及其他结构结合使用模式，给予咱们对程序控制流程更多控制。模式由以下元素的一些组合构成：

- 字面值
- 解构后的数组、枚举、结构体或元组
- 变量
- 通配符
- 占位符

一些示例模式包括 `x`、`(a, 3)` 和 `Some(Color::Red)` 等。在模式有效的上下文中，这些组件描述了数据的形状。然后，我们的程序会将值与模式匹配，以确定其是否有着正确的数据形状，从而决定继续运行特定的代码片段。

要使用模式，我们就要将其与某个值比较。当模式与值匹配时，我们就会在代码中使用该值的各个部分。回顾第 6 章中使用模式的 `match` 表达式，比如硬币分类机的示例。当值符合模式的形状时，我们可以使用命名的部分。当不符合时，与该模式关联的代码将不会运行。

这一章是所有与模式相关的内容的参考。我们将介绍

- 使用模式的有效位置、
- 可证伪与不可证伪模式的区别，
- 以及咱们可能见到的不同类别的模式语法。


在这一章结束时，咱们将了解如何使用模式来清晰地表达许多概念。

> **译注**：Rust 中的模式匹配，借鉴了 Erlang/OTP 中的概念。模式匹配在 Erlang/OTP 中属于基础的存在。
>
> 参考：
>
> - [变量绑定与模式匹配](https://erl.xfoss.com/part-ii/Ch03-basic_concepts.html#%E5%8F%98%E9%87%8F%E7%BB%91%E5%AE%9A%E4%B8%8E%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D)
>
> - [又来模式匹配](https://erl.xfoss.com/part-ii/Ch03-basic_concepts.html#%E5%8F%88%E6%9D%A5%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D)
