Why is this an issue?

Looping over x.next() is misleading and can introduce subtle bugs. x.next() returns an Option which should be handled properly. When used in a loop, Option implements IntoIterator, resulting in unexpected behavior where only a single element or None might be processed, leading to difficult-to-diagnose errors.

Code examples

Noncompliant code example

for value in iterator.next() {
    // Noncompliant: Looping directly over `iterator.next()`
    println!("{value}");
}

Compliant solution

for value in iterator {
    // Compliant: Looping directly over `iterator`
    println!("{value}");
}

Alternatively, handling the Option:

if let Some(value) = iterator.next() {
    // Process the single value
    println!("{value}");
}

Resources

Documentation