FromIterator
FromIterator
дозволяє створювати колекцію з 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
реалізує
fn collect<B>(self) -> B
where
B: FromIterator<Self::Item>,
Self: Sized
Існує два способи вказати B
для цього методу:
- З " turbofish":
some_iterator.collect::<COLLECTION_TYPE>()
, як показано. Скорочення_
, використане тут, дозволяє Rust визначити тип елементівVec
. - З виведенням типу:
let prime_squares: Vec<_> = some_iterator.collect()
. Перепишіть приклад так, щоб він мав такий вигляд.
Існують базові реалізації FromIterator
для Vec
, HashMap
тощо. Існують також більш спеціалізовані реалізації, які дозволяють робити цікаві речі, наприклад, перетворювати Iterator<Item = Result<V, E>>
у Result<Vec<V>, E>
.