Implementing Copy for iterators makes footguns, and the standard library settled not to do so for now.
let mut it = /* a Copy + Iterator */;
for x in it { if cond { break; } } // `it` copied here (forgot to `&mut it`)
let x = it.next(); // `it` is in the initial state
Clippy should have a lint that warns if "use of the original iterator after copied" is detected.
Implementing
Copyfor iterators makes footguns, and the standard library settled not to do so for now.Clippy should have a lint that warns if "use of the original iterator after copied" is detected.