РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
588 of 1245 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить