martes, 2 de enero de 2024

FromIterator en Rust


FromIterator te permite crear 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:?}");

}


Iterator iteradores:


fn collect<B>(self) -> B

where

    B: FromIterator<Self::Item>,

    Self: Sized


Hay dos formas de especificar B para este método:

  • Con el “turbofish”: some_iterator.collect::<COLLECTION_TYPE>(), como se muestra. La abreviatura _ utilizada aquí le permite a Rust inferir el tipo de elementos Vec.
  • Con inferencia de tipos: let prime_squares: Vec<_> = some_iterator.collect(). Vuelva a escribir el ejemplo para utilizar este formulario.

Hay implementaciones básicas de FromIterator para Vec, HashMap, etc. También hay implementaciones más especializadas que le permiten hacer cosas interesantes como convertir un Iterator<Item = Result<V, E>> en un Result<Vec<V>, E> .

No hay comentarios.:

Publicar un comentario