FromIterator
FromIterator permite construir una colección a partir de un 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 implementa
fn collect<B>(self) -> B
where
B: FromIterator<Self::Item>,
Self: Sized
Hay dos formas de especificar B en este método:
- Con “turbofish”:
some_iterator.collect::<COLLECTION_TYPE>(), tal como se muestra. La forma abreviada de_que se utiliza aquí permite que Rust infiera el tipo de los elementosVec. - Con inferencia de tipos:
let prime_squares: Vec<_> = some_iterator.collect(). Reescribe el ejemplo para usar esta opción.
Existen implementaciones básicas de FromIterator para Vec, HashMap, etc. También existen implementaciones mas especializadas que te dejan hacer cosas padres como convertir un Iterator<Item = Result<V, E>> a un Result<Vec<V>, E>.