Código de demonstração usando a versãorustc 1.86.0 (05f9846f8 2025-03-31)
fn main() {
let mut source = 1..3;
test(&mut source); // This is good. which means &mut Range<T> is Iterator.
test(&source); // This code error "`&std::ops::Range<{integer}>` is not an iterator"
}
fn test(i: impl Iterator<Item = i32>) {
for i in i {
println!("{}", i);
}
}
Não encontrei o motivo da ferrugem no código fonte.