On an iterator, the collect
method can produce many types of collections:
fn collect<B>(self) -> B
where
B: FromIterator<Self::Item>,
Types that implement FromIterator
include Vec
, String
and many more. Because there are so many possibilities, something needs to constrain the result type. You can specify the type with something like .collect::<Vec<_>>()
or let something: Vec<_> = some_iter.collect()
.
Until the type is known, you cannot call the method len()
because it’s impossible to know if an unknown type has a specific method.
If you’re purely wanting to find out how many items there are in an iterator, use Iterator.count()
; creating a vector for the purpose is rather inefficient.