Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
601 of 1246 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить