Глава 19

Паттерны и сопоставление

Паттерны — это специальный синтаксис в Rust для сопоставления со структурой типов, как сложных, так и простых. Использование паттернов вместе с выражениями match и другими конструкциями даёт вам больше контроля над потоком управления программы. Паттерн состоит из комбинации следующих элементов:

  • Литералы
  • Деструктурированные массивы, перечисления, структуры или кортежи
  • Переменные
  • Подстановочные знаки (wildcards)
  • Заполнители (placeholders)

Некоторые примеры паттернов включают x, (a, 3) и Some(Color::Red). В контекстах, где паттерны допустимы, эти компоненты описышают форму данных. Затем наша программа сопоставляет значения с паттернами, чтобы определить, соответствуют ли данные требуемой форме для продолжения выполнения определённого фрагмента кода.

Чтобы использовать паттерн, мы сравниваем его с некоторым значением. Если паттерн совпадает со значением, мы используем части этого значения в нашем коде. Вспомните выражения match из главы 6, которые использовали паттерны, такие как пример с машиной для сортировки монет. Если значение соответствует форме паттерна, мы можем использовать именованные части. Если нет, код, связанный с паттерном, не выполнится.

Эта глава является справочником по всему, что связано с паттернами. Мы рассмотрим допустимые места для использования паттернов, разницу между опровержимыми и неопровержимыми паттернами и различные виды синтаксиса паттернов, которые вы можете встретить. К концу главы вы будете знать, как использовать паттерны для ясного выражения множества концепций.