Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
589 of 1246 menu
◀ ▶

Метод transpose

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

Синтаксис

option.transpose()

Пример

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

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

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

Ok(Some(5))

Пример

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

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

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

Err("error")

Пример

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

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

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

Ok(None)

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

  • класс Option,
    который представляет необязательное значение
  • метод map,
    который преобразует значение внутри Option
  • метод and_then,
    который применяет функцию к значению внутри Option
  • метод ok_or,
    который преобразует Option в Result
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить