Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::let_underscore_lock: Checks for let _ = sync_lock
What it meansChecks for let _ = sync_lock. This supports mutex and rwlock in parking_lot. For std locks see the rustc lint let_underscore_lock It is in the correctness group and denied by default (the build fails).
Does it matter?
This statement immediately drops the lock instead of extending its lifetime to the end of the scope, which is often not intended. To extend lock lifetime to the end of the scope, use an underscore-prefixed name instead (i.e. _lock). If you want to explicitly drop the lock, std::mem::drop conveys your intention better and is less error-prone.
Code that is almost certainly wrong. Denied by default: the build fails until you fix it or allow it.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
let _ = mutex.lock();
Write this instead
let _lock = mutex.lock();
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::let_underscore_lock)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
let_underscore_lock = "allow"One run
cargo clippy -- -A clippy::let-underscore-lockThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Clippy's own documentation
What it does
Checks for let _ = sync_lock. This supports mutex and rwlock in
parking_lot. For std locks see the rustc lint
let_underscore_lock
Why is this bad?
This statement immediately drops the lock instead of
extending its lifetime to the end of the scope, which is often not intended.
To extend lock lifetime to the end of the scope, use an underscore-prefixed
name instead (i.e. _lock). If you want to explicitly drop the lock,
std::mem::drop conveys your intention better and is less error-prone.
Example
let _ = mutex.lock();
Use instead:
let _lock = mutex.lock();
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- iter_next_loopChecks for loops on x.next()
- iter_skip_zerousage of `.skip(0)`
- iterator_step_by_zero`Iterator::step_by(0)` will panic at runtime
- lint_groups_priorityChecks for lint groups with the same priority as lints in the Cargo.toml [lints] table. This lint will be removed once cargo#12918 is resolved
- match_str_case_mismatchChecks for match expressions modifying the case of a string with non-compliant arms
- mem_replace_with_uninitChecks for mem::replace(&mut _, mem::uninitialized()) and mem::replace(&mut _, mem::zeroed())
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::iter_next_loopChecks for loops on x.next()Read it next →Did this answer your question?