summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/src/docs/mut_range_bound.txt
blob: e9c38a543b146169a0e3fc63fcd7ade333607a0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
### What it does
Checks for loops which have a range bound that is a mutable variable

### Why is this bad?
One might think that modifying the mutable variable changes the loop bounds

### Known problems
False positive when mutation is followed by a `break`, but the `break` is not immediately
after the mutation:

```
let mut x = 5;
for _ in 0..x {
    x += 1; // x is a range bound that is mutated
    ..; // some other expression
    break; // leaves the loop, so mutation is not an issue
}
```

False positive on nested loops ([#6072](https://github.com/rust-lang/rust-clippy/issues/6072))

### Example
```
let mut foo = 42;
for i in 0..foo {
    foo -= 1;
    println!("{}", i); // prints numbers from 0 to 42, not 0 to 21
}
```