Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Вспомогательные методы 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);
}
This slide should take about 5 minutes.
  • Трейт Iterator реализует многие распространённые операции функционального программирования над коллекциями (например, map, filter, reduce и т. д.). Все их описания можно найти в документации к этому трейту.

  • Многие из этих вспомогательных методов принимают исходный итератор и создают новый итератор с другим поведением. Их называют «методами-адаптерами итераторов» (iterator adapter methods).

  • Некоторые методы, например sum и count, потребляют итератор и извлекают из него все элементы.

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

Для дальнейшего изучения

  • Итераторы Rust чрезвычайно эффективны и хорошо оптимизируются. Даже сложные итераторы, построенные комбинацией многих методов-адаптеров, дают код, столь же эффективный, как эквивалентная императивная реализация.