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

Метод and_then

Метод and_then вызывается у значения типа Option<T> и принимает функцию, которая получает значение из варианта Some и возвращает новый Option<U>. Если исходный Option равен Some, то вызывается переданная функция, и её результат становится результатом метода. Если же исходный Option равен None, функция не вызывается, и сразу возвращается None. Этот метод удобен для последовательного выполнения операций, каждая из которых может вернуть Option, без появления вложенных Some(Some(...)).

Синтаксис

Option::and_then(self, f)

Пример

Давайте применим метод and_then к значению Some(2) с функцией, которая возвращает Some(x * 10):

fn main() { let res = Some(2).and_then(|x| Some(x * 10)); println!("{:?}", res); }

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

Some(20)

Пример

Давайте применим метод and_then к значению None - функция не будет вызвана, и результат останется None:

fn main() { let res = None.and_then(|x: i32| Some(x * 10)); println!("{:?}", res); }

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

None

Пример

Давайте используем and_then для последовательной цепочки операций, где каждая функция возвращает Option:

fn main() { let res = Some("12345") .and_then(|s| s.parse::<i32>().ok()) .and_then(|n| Some(n + 1)); println!("{:?}", res); }

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

Some(12346)

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

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