FromIterator

گزینه FromIterator به شما امکان می دهد از یک [Iterator](https://doc.rust-lang .org/std/iter/trait.Iterator.html) یک مجموعه یا collection بسازید.

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 برای این روش وجود دارد:

  • با کمک "turbofish": some_iterator.collect::<COLLECTION_TYPE>()، همانطور که نشان داده شده است و به طور خلاصه _ استفاده شده در اینجا به Rust امکان می‌دهد نوع عناصر "Vec" را استنتاج کند.
  • با نوع inference: let prime_squares: Vec<_> = some_iterator.collect(). این مثال را برای استفاده از این فرم بازنویسی کنید.

پیاده‌سازی‌های اولیه FromIterator برایVec, HashMap و غیره وجود دارد. همچنین پیاده‌سازی‌های تخصصی‌تری وجود دارد که به شما امکان می‌دهد کارهای جالبی مانند تبدیل Iterator<Item = Result<V, E>> به یک Result<Vec<V>, E> انجام دهید.