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

Метод transpose

Метод transpose меняет местами вложенность типов Result и Option. Он вызывается на значении типа Result<Option<T>, E> и возвращает значение типа Option<Result<T, E>>. Если исходный Result содержит Ok(Some(value)), то результатом будет Some(Ok(value)). Если исходный Result содержит Ok(None), то результатом будет None. Если исходный Result содержит Err(e), то результатом будет Some(Err(e)). Метод не принимает параметров.

Синтаксис

result.transpose()

Пример

Давайте преобразуем Ok(Some(5)) в Some(Ok(5)):

fn main() { let res: Result<Option<i32>, &str> = Ok(Some(5)); let transposed = res.transpose(); println!("{:?}", transposed); }

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

Some(Ok(5))

Пример

Давайте преобразуем Ok(None) в None:

fn main() { let res: Result<Option<i32>, &str> = Ok(None); let transposed = res.transpose(); println!("{:?}", transposed); }

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

None

Пример

Давайте преобразуем Err("error") в Some(Err("error")):

fn main() { let res: Result<Option<i32>, &str> = Err("error"); let transposed = res.transpose(); println!("{:?}", transposed); }

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

Some(Err("error"))

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

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