### What it does Checks for `Mutex::lock` calls in `if let` expression with lock calls in any of the else blocks. ### Why is this bad? The Mutex lock remains held for the whole `if let ... else` block and deadlocks. ### Example ``` if let Ok(thing) = mutex.lock() { do_thing(); } else { mutex.lock(); } ``` Should be written ``` let locked = mutex.lock(); if let Ok(thing) = locked { do_thing(thing); } else { use_locked(locked); } ```