]> git.lizzy.rs Git - rust.git/blob - src/docs/mut_mutex_lock.txt
Auto merge of #9425 - kraktus:patch-1, r=xFrednet
[rust.git] / src / docs / mut_mutex_lock.txt
1 ### What it does
2 Checks for `&mut Mutex::lock` calls
3
4 ### Why is this bad?
5 `Mutex::lock` is less efficient than
6 calling `Mutex::get_mut`. In addition you also have a statically
7 guarantee that the mutex isn't locked, instead of just a runtime
8 guarantee.
9
10 ### Example
11 ```
12 use std::sync::{Arc, Mutex};
13
14 let mut value_rc = Arc::new(Mutex::new(42_u8));
15 let value_mutex = Arc::get_mut(&mut value_rc).unwrap();
16
17 let mut value = value_mutex.lock().unwrap();
18 *value += 1;
19 ```
20 Use instead:
21 ```
22 use std::sync::{Arc, Mutex};
23
24 let mut value_rc = Arc::new(Mutex::new(42_u8));
25 let value_mutex = Arc::get_mut(&mut value_rc).unwrap();
26
27 let value = value_mutex.get_mut().unwrap();
28 *value += 1;
29 ```