Here's a way to use &mut I of an iterator to iterate a part of it. playground
fn main() {
let mut r = 0..10;
// take the back 3 elements
for elt in (&mut r).rev().take(3) {
print!("{}, ", elt);
}
println!("");
// print the rest
for elt in r {
print!("{}, ", elt);
}
println!("");
}