move readonly_write_lock to perf

This commit is contained in:
y21 2024-03-13 20:32:18 +01:00
parent 660b058ba2
commit adcbb4a9b7
3 changed files with 28 additions and 27 deletions

View File

@ -3590,7 +3590,7 @@ declare_clippy_lint! {
/// ``` /// ```
#[clippy::version = "1.73.0"] #[clippy::version = "1.73.0"]
pub READONLY_WRITE_LOCK, pub READONLY_WRITE_LOCK,
nursery, perf,
"acquiring a write lock when a read lock would work" "acquiring a write lock when a read lock would work"
} }

View File

@ -1,4 +1,5 @@
#![warn(clippy::await_holding_lock)] #![warn(clippy::await_holding_lock)]
#![allow(clippy::readonly_write_lock)]
// When adding or modifying a test, please do the same for parking_lot::Mutex. // When adding or modifying a test, please do the same for parking_lot::Mutex.
mod std_mutex { mod std_mutex {

View File

@ -1,12 +1,12 @@
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:9:13 --> tests/ui/await_holding_lock.rs:10:13
| |
LL | let guard = x.lock().unwrap(); LL | let guard = x.lock().unwrap();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:11:15 --> tests/ui/await_holding_lock.rs:12:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
@ -14,40 +14,40 @@ LL | baz().await
= help: to override `-D warnings` add `#[allow(clippy::await_holding_lock)]` = help: to override `-D warnings` add `#[allow(clippy::await_holding_lock)]`
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:25:13 --> tests/ui/await_holding_lock.rs:26:13
| |
LL | let guard = x.read().unwrap(); LL | let guard = x.read().unwrap();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:27:15 --> tests/ui/await_holding_lock.rs:28:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:31:13 --> tests/ui/await_holding_lock.rs:32:13
| |
LL | let mut guard = x.write().unwrap(); LL | let mut guard = x.write().unwrap();
| ^^^^^^^^^ | ^^^^^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:33:15 --> tests/ui/await_holding_lock.rs:34:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:53:13 --> tests/ui/await_holding_lock.rs:54:13
| |
LL | let guard = x.lock().unwrap(); LL | let guard = x.lock().unwrap();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:56:28 --> tests/ui/await_holding_lock.rs:57:28
| |
LL | let second = baz().await; LL | let second = baz().await;
| ^^^^^ | ^^^^^
@ -56,79 +56,79 @@ LL | let third = baz().await;
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:67:17 --> tests/ui/await_holding_lock.rs:68:17
| |
LL | let guard = x.lock().unwrap(); LL | let guard = x.lock().unwrap();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:69:19 --> tests/ui/await_holding_lock.rs:70:19
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:80:17 --> tests/ui/await_holding_lock.rs:81:17
| |
LL | let guard = x.lock().unwrap(); LL | let guard = x.lock().unwrap();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:82:19 --> tests/ui/await_holding_lock.rs:83:19
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:93:13 --> tests/ui/await_holding_lock.rs:94:13
| |
LL | let guard = x.lock(); LL | let guard = x.lock();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:95:15 --> tests/ui/await_holding_lock.rs:96:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:109:13 --> tests/ui/await_holding_lock.rs:110:13
| |
LL | let guard = x.read(); LL | let guard = x.read();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:111:15 --> tests/ui/await_holding_lock.rs:112:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:115:13 --> tests/ui/await_holding_lock.rs:116:13
| |
LL | let mut guard = x.write(); LL | let mut guard = x.write();
| ^^^^^^^^^ | ^^^^^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:117:15 --> tests/ui/await_holding_lock.rs:118:15
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:137:13 --> tests/ui/await_holding_lock.rs:138:13
| |
LL | let guard = x.lock(); LL | let guard = x.lock();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:140:28 --> tests/ui/await_holding_lock.rs:141:28
| |
LL | let second = baz().await; LL | let second = baz().await;
| ^^^^^ | ^^^^^
@ -137,40 +137,40 @@ LL | let third = baz().await;
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:151:17 --> tests/ui/await_holding_lock.rs:152:17
| |
LL | let guard = x.lock(); LL | let guard = x.lock();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:153:19 --> tests/ui/await_holding_lock.rs:154:19
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:164:17 --> tests/ui/await_holding_lock.rs:165:17
| |
LL | let guard = x.lock(); LL | let guard = x.lock();
| ^^^^^ | ^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:166:19 --> tests/ui/await_holding_lock.rs:167:19
| |
LL | baz().await LL | baz().await
| ^^^^^ | ^^^^^
error: this `MutexGuard` is held across an `await` point error: this `MutexGuard` is held across an `await` point
--> tests/ui/await_holding_lock.rs:185:9 --> tests/ui/await_holding_lock.rs:186:9
| |
LL | let mut guard = x.lock().unwrap(); LL | let mut guard = x.lock().unwrap();
| ^^^^^^^^^ | ^^^^^^^^^
| |
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through note: these are all the `await` points this lock is held through
--> tests/ui/await_holding_lock.rs:189:11 --> tests/ui/await_holding_lock.rs:190:11
| |
LL | baz().await; LL | baz().await;
| ^^^^^ | ^^^^^