RS.CLIPPY.MISSING_SPIN_LOOP
An empty busy waiting loop
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: missing_spin_loop. Copyright ©2025 The Rust Team. All rights reserved.
What it does
Checks 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()
}