Re[15]: Result objects - все-таки победили Exceptions?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.01.25 13:32
Оценка:
Здравствуйте, T4r4sB, Вы писали:
TB>Можно, так делают в алгоритмах. А в функции парсинга джсона в структуру — уже свой Еррор один на всю либу. А в функции открытия файла — свой еррор. А если ты хочешь передать что твоя функция может обломаться тзза отсутствия файла или кривого содержимого файла — то проще всего промапить в Box<dyn Error>, но никакого автовывода множества возможных ошибок не будет. Зато хотя бы ? поддерживает автокаст любой ошибки в trait Error
Ну вот я и говорю — то, что в тайпскрипте работает само по себе из коробки, в расте требует каких-то унизительных приседаний, если вообще работает.
Я же показал код функции, которая смешивает типы ошибок. Там нет никаких ручных маппингов.
И её необязательно писать именно в виде single expression.
Можно писать в императивном стиле, с множественными return — и всё равно выведется общий тип.
Конкретно в тайпскрипте неудобно делать постоянные проверки, но он и не ставил перед собой цель порождать provably correct programs:
function foo()
{
   let x = bar();
   if(!isNumber(x)) return x;
   let y = baz();
   if(!isNumber(y)) return y;
   return x+y;
}

Не знаю, насколько ужасно аналог такого кода будет выглядеть на Расте.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.