summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/src/docs/rc_mutex.txt
blob: ed7a1e344d086a496d7d9c975e0468ddd80769d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
### What it does
Checks for `Rc<Mutex<T>>`.

### Why is this bad?
`Rc` is used in single thread and `Mutex` is used in multi thread.
Consider using `Rc<RefCell<T>>` in single thread or `Arc<Mutex<T>>` in multi thread.

### Known problems
Sometimes combining generic types can lead to the requirement that a
type use Rc in conjunction with Mutex. We must consider those cases false positives, but
alas they are quite hard to rule out. Luckily they are also rare.

### Example
```
use std::rc::Rc;
use std::sync::Mutex;
fn foo(interned: Rc<Mutex<i32>>) { ... }
```

Better:

```
use std::rc::Rc;
use std::cell::RefCell
fn foo(interned: Rc<RefCell<i32>>) { ... }
```