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 トレイトは、コレクションに対する多くの一般的な関数型 プログラミング操作(たとえば mapfilterreduce など)を実装しています。 これらに関するすべてのドキュメントは、このトレイトにあります。

  • これらのヘルパーメソッドの多くは、元のイテレータを受け取り、異なる振る舞いを する新しいイテレータを生成します。これらは「iterator adapter methods」として知られています。

  • sumcount のような一部のメソッドは、イテレータを消費し、その中から すべての要素を取り出します。

  • これらのメソッドは連結して使えるように設計されているため、必要なことを正確に行う カスタムイテレータを簡単に構築できます。

さらに学ぶ

  • Rust のイテレータは非常に効率的で、高度に最適化可能です。多くのアダプタ メソッドを組み合わせて作られた複雑なイテレータであっても、同等の命令型実装と 同じくらい効率的なコードになります。