### 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
}
```