### What it does
Check for empty spin loops

### Why is this bad?
The loop body should have something like `thread::park()` or at least
`std::hint::spin_loop()` to avoid needlessly burning cycles and conserve
energy. Perhaps even better use an actual lock, if possible.

### Known problems
This lint doesn't currently trigger on `while let` or
`loop { match .. { .. } }` loops, which would be considered idiomatic in
combination with e.g. `AtomicBool::compare_exchange_weak`.

### Example

```
use core::sync::atomic::{AtomicBool, Ordering};
let b = AtomicBool::new(true);
// give a ref to `b` to another thread,wait for it to become false
while b.load(Ordering::Acquire) {};
```
Use instead:
```
while b.load(Ordering::Acquire) {
    std::hint::spin_loop()
}
```