Вспомогательные методы Iterator
Помимо метода next, который определяет поведение итератора, трейт Iterator предоставляет более 70 вспомогательных методов, с помощью которых можно строить настраиваемые итераторы.
// Copyright 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
let result: i32 = (1..=10) // Создаём диапазон от 1 до 10
.filter(|x| x % 2 == 0) // Оставляем только чётные числа
.map(|x| x * x) // Возводим каждое число в квадрат
.sum(); // Суммируем все квадраты
println!("The sum of squares of even numbers from 1 to 10 is: {}", result);
}
-
Трейт
Iteratorреализует многие распространённые операции функционального программирования над коллекциями (например,map,filter,reduceи т. д.). Все их описания можно найти в документации к этому трейту. -
Многие из этих вспомогательных методов принимают исходный итератор и создают новый итератор с другим поведением. Их называют «методами-адаптерами итераторов» (iterator adapter methods).
-
Некоторые методы, например
sumиcount, потребляют итератор и извлекают из него все элементы. -
Эти методы рассчитаны на то, чтобы их можно было объединять в цепочку, так что легко построить собственный итератор, который делает именно то, что нужно.
Для дальнейшего изучения
- Итераторы Rust чрезвычайно эффективны и хорошо оптимизируются. Даже сложные итераторы, построенные комбинацией многих методов-адаптеров, дают код, столь же эффективный, как эквивалентная императивная реализация.