Re[9]: Почему в расте отсутствует выброс исключений?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.12.22 11:20
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Кстати, а где в твоём примере разные коды ошибок?


В Result есть поле error


TB>Где немедленный возврат из функции в случае ошибки?


Такого нету, надо через if. Но можно намакросить, будет достаточно коротко


TB>Больше похоже на Optional.


Это он почти и есть, с некоторым дополнениями. Есть ещё Error, который почти как Result, но содержит только код ошибки. Наверно оно аналогично Result<void>, я уже не помню, нафига я его отдельно сделал. Error и Result умеют конвертироваться друг в друга. Есть ещё хитрый оператор !, точно не помню как работает, смотреть лень, он нужен для немного странной записи:

[сcode]
if (auto res = getResult())
{
// Делаем полезное с валидным результатом
}

if (auto res = !getResult())
{
// Результат не валиден
return Error(res);
}

[/сcode]


А в расте оператор ?, как я понял, проверяет на ошибку и делает return из текущей функции? Ну может и удобно, но как я понимаю, у всей иерархии тип результата одинаковый? Это не особо часто таки бывает. Или как оно работает?
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.