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

Метод inspect

Метод inspect создаёт новый итератор, который вызывает переданную функцию для каждого элемента по мере его прохождения, но возвращает исходный элемент без изменений. Параметром метод принимает замыкание, которое получает ссылку на очередной элемент и может выполнить любое побочное действие, например, вывести значение на экран или записать его в журнал. Метод удобен для отладки цепочек итераторов, когда нужно посмотреть промежуточные значения, не нарушая логику обработки.

Синтаксис

iter.inspect(f)

Пример

Давайте создадим итератор по вектору чисел и с помощью inspect выведем каждое значение в процессе обработки:

fn main() { let res: Vec<i32> = vec![1, 2, 3, 4, 5] .into_iter() .inspect(|x| println!("inspect: {}", x)) .map(|x| x * 2) .collect(); println!("{:?}", res); }

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

inspect: 1 inspect: 2 inspect: 3 inspect: 4 inspect: 5 [2, 4, 6, 8, 10]

Пример

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

fn main() { let res: Vec<i32> = vec![1, 2, 3, 4, 5] .into_iter() .inspect(|x| println!("before filter: {}", x)) .filter(|x| x % 2 == 0) .inspect(|x| println!("after filter: {}", x)) .collect(); println!("{:?}", res); }

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

before filter: 1 before filter: 2 after filter: 2 before filter: 3 before filter: 4 after filter: 4 before filter: 5 [2, 4]

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

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