FromIterator

FromIterator を使用すると、Iterator からコレクションを作成できます。

fn main() {
    let primes = vec![2, 3, 5, 7];
    let prime_squares = primes.into_iter().map(|p| p * p).collect::<Vec<_>>();
    println!("prime_squares: {prime_squares:?}");
}
This slide should take about 5 minutes.

Iterator の実装

fn collect<B>(self) -> B
where
    B: FromIterator<Self::Item>,
    Self: Sized

このメソッドで B を指定するには、次の 2 つの方法があります。

  • 「turbofish」を使用する場合: 例えば、上記における、some_iterator.collect::<COLLECTION_TYPE>()。ここで使用されている_ はRustにVecの要素の方を推測させるためのものです。
  • 型推論を使用する場合: let prime_squares: Vec<_> = some_iterator.collect()。この形式を使用するように例を書き換えてください。

VecHashMap などに FromIterator の基本的な実装が用意されています。また、Iterator<Item = Result<V, E>>Result<Vec<V>, E> に変換できるものなど、より特化した実装もあります。