Диагностика и причина
СсылкаОбразец let, который может не совпасть
- Семейство
- topaz
- Этап
- check
- Код
TPZ5026
Причина и условия
Образец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.
Действия
Обработайте оба исхода с помощью if let или match либо выберите образец, который всегда совпадает.
Фаза компилятора check.
Пояснение компилятора
Образец let может не совпасть со значением во время выполнения.
В шаблонах сообщений маркер ⟨value⟩ обозначает текст, вычисленный для программы, вызвавшей сообщение.
refutable pattern in `let`: it does not match every value of the type — use `if let` to handle the non-matching caseОбразец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.
Образец let, который может не совпасть
Образец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.
Действия
СсылкаОбработайте оба исхода с помощью if let или match либо выберите образец, который всегда совпадает.
Воспроизведение и проверка
СсылкаОтклонённая программа
Ссылкаlet maybe: Option<int> = None()let Some(value) = maybe
Нет стандартного вывода.Ожидаемый результат
Ожидаемый результат
Этап отклонения check. Ненулевой код завершения.
diagnostics-refutable-let-pattern at
example.tpz:2:5
Исправленная программа
Ссылкаlet maybe: Option<int> = None()let value: int = match (maybe) {case Some(number) => numbercase None() => 0}
Ожидаемый результат
Ожидаемый результат
Проверка принимает программу. Код завершения 0.