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>
انجام دهید.