РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
585 of 1245 menu

Метод ok_or

Метод ok_or преобразует тип Option в тип Result. Если исходный Option содержит значение Some, то метод возвращает Ok с этим значением. Если же исходный Option равен None, то метод возвращает Err с переданным аргументом. Параметром метод принимает значение ошибки, которое будет использовано в случае отсутствия данных.

Синтаксис

option.ok_or(err)

Пример

Давайте преобразуем значение Some в Result и выведем результат на экран:

fn main() { let opt = Some(5); let res = opt.ok_or("error"); println!("{:?}", res); }

Результат выполнения кода:

Ok(5)

Пример

Давайте преобразуем значение None в Result и выведем результат на экран:

fn main() { let opt: Option<i32> = None; let res = opt.ok_or("error"); println!("{:?}", res); }

Результат выполнения кода:

Err("error")

Пример

Давайте используем метод ok_or вместе с оператором ? для возврата ошибки из функции:

fn find_char(s: &str) -> Result<char, String> { let res = s.chars().next().ok_or("empty string".to_string())?; Ok(res) } fn main() { let res1 = find_char("abcde"); println!("{:?}", res1); let res2 = find_char(""); println!("{:?}", res2); }

Результат выполнения кода:

Ok('a') Err("empty string")

Смотрите также

  • метод ok_or_else,
    который принимает функцию для генерации ошибки
  • метод unwrap,
    который извлекает значение из Option
  • метод is_some,
    который проверяет, содержит ли Option значение
  • метод map,
    который преобразует значение внутри Option
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить