Образцы и сопоставление
Образцы (patterns) — это особый синтаксис в Rust для сопоставления со структурой типов, как сложных, так и простых. Использование образцов вместе с выражениями match и другими конструкциями даёт больше контроля над потоком выполнения программы. Образец состоит из комбинации следующих элементов:
- Литералов
- Разобранных (destructured) массивов, перечислений, структур или кортежей
- Переменных
- Шаблонов wildcard (любое значение)
- Заполнителей (placeholders)
Примеры образцов: x, (a, 3), Some(Color::Red). В контекстах, где образцы допустимы, эти компоненты описывают форму данных. Затем программа сопоставляет значения с образцами, чтобы определить, соответствуют ли данные требуемой форме для продолжения выполнения конкретного фрагмента кода.
Чтобы использовать образец, мы сравниваем его с некоторым значением. Если образец совпадает со значением, мы используем части значения в своём коде. Вспомните выражения match из Главы 6, которые использовали образцы, например, пример с сортировкой монет. Если значение соответствует форме образца, мы можем использовать именованные части. Если нет — код, связанный с этим образцом, не выполнится.
Эта глава является справочником по всем вопросам, связанным с образцами. Мы рассмотрим допустимые места для использования образцов, разницу между опровержимыми (refutable) и неопровержимыми (irrefutable) образцами, а также различные виды синтаксиса образцов, которые вы можете встретить. К концу главы вы будете знать, как использовать образцы для ясного выражения многих концепций.