2020-03-18 01:51:43 +00:00
|
|
|
error: calling `Mutex::lock` inside the scope of another `Mutex::lock` causes a deadlock
|
2020-04-15 21:08:26 +00:00
|
|
|
--> $DIR/if_let_mutex.rs:10:5
|
2020-03-18 01:51:43 +00:00
|
|
|
|
|
2022-08-31 13:24:45 +00:00
|
|
|
LL | if let Err(locked) = m.lock() {
|
|
|
|
| ^ - this Mutex will remain locked for the entire `if let`-block...
|
|
|
|
| _____|
|
|
|
|
| |
|
2023-07-28 19:35:48 +00:00
|
|
|
LL | |
|
2020-03-18 01:51:43 +00:00
|
|
|
LL | | do_stuff(locked);
|
|
|
|
LL | | } else {
|
|
|
|
LL | | let lock = m.lock().unwrap();
|
2022-08-31 13:24:45 +00:00
|
|
|
| | - ... and is tried to lock again here, which will always deadlock.
|
2020-03-18 01:51:43 +00:00
|
|
|
LL | | do_stuff(lock);
|
|
|
|
LL | | };
|
|
|
|
| |_____^
|
|
|
|
|
|
|
|
|
= help: move the lock call outside of the `if let ...` expression
|
2022-09-22 16:04:22 +00:00
|
|
|
= note: `-D clippy::if-let-mutex` implied by `-D warnings`
|
2020-03-18 01:51:43 +00:00
|
|
|
|
2020-04-15 21:08:26 +00:00
|
|
|
error: calling `Mutex::lock` inside the scope of another `Mutex::lock` causes a deadlock
|
2023-07-28 19:35:48 +00:00
|
|
|
--> $DIR/if_let_mutex.rs:23:5
|
2020-04-15 21:08:26 +00:00
|
|
|
|
|
2022-08-31 13:24:45 +00:00
|
|
|
LL | if let Some(locked) = m.lock().unwrap().deref() {
|
|
|
|
| ^ - this Mutex will remain locked for the entire `if let`-block...
|
|
|
|
| _____|
|
|
|
|
| |
|
2023-07-28 19:35:48 +00:00
|
|
|
LL | |
|
2020-04-15 21:08:26 +00:00
|
|
|
LL | | do_stuff(locked);
|
|
|
|
LL | | } else {
|
|
|
|
LL | | let lock = m.lock().unwrap();
|
2022-08-31 13:24:45 +00:00
|
|
|
| | - ... and is tried to lock again here, which will always deadlock.
|
2020-04-15 21:08:26 +00:00
|
|
|
LL | | do_stuff(lock);
|
|
|
|
LL | | };
|
|
|
|
| |_____^
|
|
|
|
|
|
|
|
|
= help: move the lock call outside of the `if let ...` expression
|
|
|
|
|
2022-08-31 13:24:45 +00:00
|
|
|
error: calling `Mutex::lock` inside the scope of another `Mutex::lock` causes a deadlock
|
2023-07-28 19:35:48 +00:00
|
|
|
--> $DIR/if_let_mutex.rs:45:5
|
2022-08-31 13:24:45 +00:00
|
|
|
|
|
|
|
|
LL | if let Ok(i) = mutex.lock() {
|
|
|
|
| ^ ----- this Mutex will remain locked for the entire `if let`-block...
|
|
|
|
| _____|
|
|
|
|
| |
|
2023-07-28 19:35:48 +00:00
|
|
|
LL | |
|
2022-08-31 13:24:45 +00:00
|
|
|
LL | | do_stuff(i);
|
|
|
|
LL | | } else {
|
|
|
|
LL | | let _x = mutex.lock();
|
|
|
|
| | ----- ... and is tried to lock again here, which will always deadlock.
|
|
|
|
LL | | };
|
|
|
|
| |_____^
|
|
|
|
|
|
|
|
|
= help: move the lock call outside of the `if let ...` expression
|
|
|
|
|
|
|
|
error: aborting due to 3 previous errors
|
2020-03-18 01:51:43 +00:00
|
|
|
|