FromIterator

FromIterator permite que vocĂȘ construa uma coleção a partir de um 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

Existem duas maneiras de especificar B para este método:

  • Com o "turbofish": some_iterator.collect::<COLLECTION_TYPE>(), como mostrado. O shorthand _ usado aqui permite que o Rust infira o tipo dos elementos do Vec.
  • Com inferĂȘncia de tipo: let prime_squares: Vec<_> = some_iterator.collect(). Reescreva o exemplo para usar esta forma.

Hå implementaçÔes båsicas de FromIterator para Vec, HashMap, etc. Também existem implementaçÔes mais especializadas que permitem fazer coisas legais, como converter um Iterator<Item = Result<V, E>> em um Result<Vec<V>, E>.