Um iterador possui um estado de iteração. Ele deve saber qual será o próximo elemento a fornecer.
Portanto, um vetor por si só não é um iterador, e a distinção é importante. Você pode ter dois iteradores sobre o mesmo vetor, por exemplo, cada um com seu estado de iteração específico.
Mas um vetor pode fornecer um iterador, é por isso que ele implementa IntoIterator
, o que permite escrever isso:
let v = vec![1, 4];
for a in v {
dbg!(a);
}
Muitas funções ocorrem IntoIterator
quando um iterador é necessário, e é o caso disso zip
, e é por isso que
let rx = xs.iter().zip(ys.iter());
pode ser substituído por
let rx = xs.iter().zip(ys);