# 模式与匹配

**Patterns and Matching**

*模式，patterns* 属于 Rust 中，用于与不论简单，还是复杂的类型结构体，做匹配的一种特别语法。与 `match` 表达式及其他一些构件，other constructs，结合使用模式，就会给到咱们对程序控制流程更多的掌控。模式有以下元素的一些组合构成：

- 字面值

- 解构过后的数组、枚举、结构体或元组等，destructured arrays, enums, structs, or tuples

- 变量

- 通配符，wildcards

- 占位符，placeholders


一些示例模式，包括 `x`、`(a, 3)` 及 `Some(Color::Red)` 等。在模式为有效的语境中，这些组件描述了数据的形状，the shape of data。咱们的程序随后就会将一些值，与这些模式做匹配，来判断其是否有着数据的正确形状，而继续运行代码的某个特定片段。


要运用某个模式，咱们就要将其与某个值比较。在该模式与那个值匹配时，咱们在咱们的代码中，使用这个值的那些部分。回顾第 6 章中用到模式的那些 `match` 表达式，比如那个硬币分类机器示例。在值满足模式形状时，咱们就可以使用那些命名的代码片段。而在不满足时，与该模式关系的代码就不会运行。

本章时与模式相关全部内容的一个参考。咱们将涵盖运用模式的那些有效位置、可证伪与不可证伪模式的区别，the difference between refutable and irrefutable patterns，以及可能见到的那些不同类别的模式语法。在本章最后，咱们将获悉，如何运用模式来清晰地表达许多概念。
