Iterators are useful in Rust to avoid bound checking, but sometimes an index is need. It would be useful to have iterators available which provide also an index value for each iteration. I am thinking about something like:
for (v1e, i) in v1.iter_mut_idx() {
*v1e = i;
}
A more complex example would be:
for ((v1e, i), v2e) in v1.iter_mut_idx().zip(v2.iter()) {
*v1e = v1e + v2e + i;
}