Un iterador tiene un estado de iteración. Debe saber cuál será el próximo elemento para darle.
Entonces, un vector en sí mismo no es un iterador, y la distinción es importante. Puede tener dos iteradores sobre el mismo vector, por ejemplo, cada uno con su estado de iteración específico.
Pero un vector puede proporcionarle un iterador, por eso se implementa IntoIterator
, lo que le permite escribir esto:
let v = vec![1, 4];
for a in v {
dbg!(a);
}
Muchas funciones toman un IntoIterator
cuando se necesita un iterador, y ese es el caso zip
, razón por la cual
let rx = xs.iter().zip(ys.iter());
puede ser reemplazado con
let rx = xs.iter().zip(ys);