Структуры, перечисления, сопоставление
Структуры, перечисления с данными, исчерпывающность match, опровержимость и синтаксис шаблонов.
Тема охватывает пользовательские типы данных и сопоставление с образцом (pattern matching). Раздел о структурах разбирает структуры с именованными полями, кортежные и единичные структуры, сокращённую инициализацию полей, синтаксис обновления структуры, который перемещает поля, и требование Debug для {:?}. Раздел о перечислениях показывает варианты с данными, дискриминанты перечислений без данных, вариант как функцию-конструктор и то, почему Option<T> нельзя использовать как T. Вопросы о match проверяют исчерпывающность: почему охранные условия (guards) не учитываются при её проверке, почему match по целому числу должен покрывать весь диапазон и что происходит с ветвью после _. Разделы об опровержимости и синтаксисе шаблонов разбирают, какие шаблоны допустимы в let и параметрах функции, как работают @, .. и альтернативы через |, и как сопоставление через ссылку обходится без перемещения значения. Последний раздел посвящён if let, while let, let else с обязательно расходящимся блоком else, цепочкам let в условии if и макросу matches!.
39 вопросов: базовый уровень — 20, средний — 17, углублённый — 2. 6 справок, 23 источника.
Разделы
- Структуры: с именованными полями, кортежные, единичные
- Перечисления с данными
- Исчерпывающность
match - Опровержимость шаблонов
- Синтаксис шаблонов:
@,.., guards if let,while let,let else
Предыдущая тема: Времена жизни, подтипизация, вариантность · Следующая тема: Строки и текст