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