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

Метод find

Метод find проходит по элементам итератора и возвращает первый элемент, для которого функция-предикат вернула true. Если ни один элемент не удовлетворяет условию, метод возвращает None. Параметром метод принимает замыкание, которое получает ссылку на очередной элемент и возвращает bool.

Метод возвращает значение типа Option: Some с найденным элементом или None. При этом find забирает элемент по значению, то есть итератор должен быть владеющим.

Синтаксис

iterator.find(predicate)

Пример

Давайте найдём первое чётное число в векторе:

fn main() { let res = vec![1, 3, 4, 5, 6].into_iter().find(|x| x % 2 == 0); println!("{:?}", res); }

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

Some(4)

Пример

Давайте попробуем найти элемент, которого нет в итераторе:

fn main() { let res = vec![1, 3, 5, 7].into_iter().find(|x| x % 2 == 0); println!("{:?}", res); }

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

None

Пример

Давайте найдём первую строку, начинающуюся с буквы "a":

fn main() { let res = vec!["abcde", "12345", "apple"].into_iter().find(|s| s.starts_with("a")); println!("{:?}", res); }

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

Some("abcde")

Пример

Давайте извлечём найденное значение с помощью сопоставления с образцом:

fn main() { let iter = vec![10, 20, 30, 40].into_iter(); match iter.find(|x| x > &15) { Some(n) => println!("Found: {}", n), None => println!("Not found"), } }

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

"Found: 20"

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

  • метод find_map,
    который находит элемент и сразу преобразует его
  • метод position,
    который возвращает индекс первого подходящего элемента
  • метод any,
    который проверяет, есть ли хотя бы один подходящий элемент
  • метод filter,
    который оставляет все элементы, удовлетворяющие условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить