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

Метод filter

Метод filter проверяет значение, содержащееся в варианте Some, с помощью переданной функции-предиката. Если предикат возвращает true, метод возвращает исходный Some со значением. Если предикат возвращает false, метод возвращает None. Если исходный Option равен None, метод также возвращает None. Параметром метод принимает замыкание, которое получает ссылку на значение и возвращает булево значение.

Метод не изменяет исходный Option, а возвращает новый. Это позволяет удобно объединять проверку условия и обработку отсутствующего значения в одной цепочке вызовов.

Синтаксис

Option::filter(self, predicate)

Здесь self - это Option, для которого вызывается метод, а predicate - замыкание, принимающее ссылку на значение и возвращающее bool.

Пример

Давайте проверим, что значение внутри Some больше нуля:

fn main() { let opt = Some(5); let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

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

Some(5)

Пример

Давайте проверим, что значение внутри Some больше нуля, когда значение отрицательное:

fn main() { let opt = Some(-3); let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

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

None

Пример

Давайте применим filter к значению None:

fn main() { let opt: Option<i32> = None; let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

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

None

Пример

Давайте используем filter вместе с map для проверки строки на длину:

fn main() { let opt = Some("abcde"); let res = opt.filter(|s| s.len() == 5); println!("{:?}", res); }

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

Some("abcde")

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

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