Is it accurate to state that a vector (among other collection types) is an Iterator
?
For example, I can loop over a vector in the following way, because
No, a vector is not an iterator.
But it implements the trait IntoIterator, which the for
loop uses to convert the vector into the required iterator.
In the documentation for Vec you can see that IntoIterator
is implemented in three ways:
Vec<T>
, which is moved and the iterator returns items of type T
, &Vec<T>
, where the iterator returns shared references &T
,&mut Vec<T>
, where mutable references are returned.iter() is just a method in Vec
to convert Vec<T>
directly into an iterator that returns shared references, without first converting it into a reference. There is a sibling method iter_mut() for producing mutable references.