Привет! Может кто-нибудь объяснить, в чем собственно идея None и

Some с точки зрения архитектуры, ведь есть уже "отлавливатель" ошибок expect и т.д?

7 ответов

29 просмотров

Expect ведет к панике. Матчингом можно обработать ошибку не паникуя

icupken- Автор вопроса
Пашечка
Expect ведет к панике. Матчингом можно обработать ...

то есть, Some(T) это как условный флаг, что мы не пытаемся вылезти туда куда не надо?

icupken
то есть, Some(T) это как условный флаг, что мы не ...

У тебя проверка значений, на то есть оно или нет

icupken
то есть, Some(T) это как условный флаг, что мы не ...

Например, есть функция, которая ищет разделитель в массиве байт и возвращает индекс позиции этого разделителя. 0 здесь вполне ликвидное значение, поэтому нет возможности определить был ли найден разделитель используя usize. Но допустим массив очень длинный, и мы не может использовать знаковое целое. Поэтому используем Option<usize>, если оно возвращает Some, то мы знаем, что разделитель найден и можем получить его индекс. Если не найден - вернет None. Но это нормальное поведение, поэтому мы не хотим вызывать панику, а хотим, если разделитель не найден, выводить весь массив, например. Тогда можно написать: let a = if Some(idx) = result { &arr[idx..] } else { &arr[..] };

icupken- Автор вопроса

а почему нельзя тогда результатом функции возвращать Result

icupken
а почему нельзя тогда результатом функции возвраща...

Ну, в конкретном примере можно. А так - иногда это не ошибка. Лучшего примера пока в голову не лезет)

icupken- Автор вопроса
Пашечка
Ну, в конкретном примере можно. А так - иногда это...

ну в общих чертах я понял идею, спасибо большое

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта