5.5 Сопоставление с образцом
match result {
Receipt r if r.amount > LIMIT => review(r)
Receipt r => ok(r)
Declined(reason) => warn(reason)
Timeout | Unavailable => retryLater()
_ => fail Unknown
}| Образец | Пример |
|---|---|
| литерал, диапазон | 0, "x", 1..=9 |
| заполнитель | _ |
| привязка | x, mut-привязка: var x |
| тип | Receipt, с привязкой Receipt r |
| вариант enum | Circle(r), .Circle(r), Rect(w: w, ..) |
| data | User{ name, role: .Admin, .. } |
| кортеж | (a, _, c) |
| список/срез | [], [x], [first, ..rest] |
| альтернатива | A | B (привязки во всех ветках одинаковы) |
| охрана | образец if условие |
match ДОЛЖЕН быть исчерпывающим. Ветки разделяются переводом строки или запятой; тело ветки — выражение или блок.
Дополнительный образец: x? — совпадает с любым значением, кроме none, и привязывает его к x (while let d? = queue.pop() { … }).
Связанные диагностики
non-exhaustive, pattern-bindings, unreachable-arm
См. также
Исходник: docs/spec/oxl-standard.md