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()
。この形式を使用するように例を書き換えてください。
Vec
や HashMap
などに FromIterator
の基本的な実装が用意されています。また、Iterator<Item = Result<V, E>>
を Result<Vec<V>, E>
に変換できるものなど、より特化した実装もあります。