Ты как-то плаваешь в Rust, друг мой.
> ты решил тактично пропустить...А что там обсуждать? Мы говорим о panic(), который вызывается при unwrap(). При чём тут обычные возвращаемые значения из функции?
Вот вызываю я функцию библиотеки, она откуда-то получает option. Вызывает на нём unwrap() и я получаю панику. При том сама функция естественно может возвращать Option (но в других случаях).
Я конечно бы обработал возвращаемое значение, только панику не обработать. Или я не прав?
Тоже самое касается Result. unwrap() на Result это паника при Err().
И почему в таком супер безопасном языке, где защищаются именно от программиста дурака, который и с указателями и индексами не может справиться, можно просто взять и вызвать unwrap() и кинуть панику? Притом случайно, непреднамеренно.
Вот они аргументы (кого-то выше) "но есть же unwrap_or()" меня умиляют.
Да, есть. Это типа "Пиши просто сразу безопасно", из такого разряда? Так и в С можно писать сразу безопасно и проверять указатель на NULL везде.
Супербезопасный язык, который позволяет кидать паники налево и направо вместо того чтобы заставить обработать ошибку (и возможно там кинуть панику - но это уже будет явно и осмысленно, а не случайно по недосмотру) и создавать неинициализированные переменные 😆 - смотри вопрос выше сообщением твоему коллеге.
Вот эти аргументы "но это же не пройдёт код ревью!" думаю понимаешь что очень слабые. В С++ тоже не пройдет 😆
При этом этот же программист должен использовать методы без паники (ой...так они ещё и не помечены как unsafe???? Это каааак так???), но не в состоянии не использовать переменную после того как она была перемещена в функцию?