I want to switch the direction of an iterator based on a boolean parameter. I tried the following approach, but it ends with a compile error:
fn main() {
let numbers = vec![1, 2, 3, 4, 5, 6];
print(&numbers, false);
print(&numbers, true);
}
fn print(what: &[i32], reverse: bool) {
let iter = what.iter();
if reverse {
iter = iter.rev();
}
for n in iter {
println!("{n}");
}
}
This is the error I receive:
// Error:
mismatched types
expected struct `std::slice::Iter<'_, _>`
found struct `Rev<std::slice::Iter<'_, _>>`
How could I implement my desired behavior?