]> git.lizzy.rs Git - rust.git/blob - src/docs/needless_borrowed_reference.txt
Auto merge of #9421 - xphoniex:fix-#9420, r=giraffate
[rust.git] / src / docs / needless_borrowed_reference.txt
1 ### What it does
2 Checks for bindings that destructure a reference and borrow the inner
3 value with `&ref`.
4
5 ### Why is this bad?
6 This pattern has no effect in almost all cases.
7
8 ### Known problems
9 In some cases, `&ref` is needed to avoid a lifetime mismatch error.
10 Example:
11 ```
12 fn foo(a: &Option<String>, b: &Option<String>) {
13     match (a, b) {
14         (None, &ref c) | (&ref c, None) => (),
15         (&Some(ref c), _) => (),
16     };
17 }
18 ```
19
20 ### Example
21 ```
22 let mut v = Vec::<String>::new();
23 v.iter_mut().filter(|&ref a| a.is_empty());
24 ```
25
26 Use instead:
27 ```
28 let mut v = Vec::<String>::new();
29 v.iter_mut().filter(|a| a.is_empty());
30 ```