]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | // run-rustfix |
2 | #![allow(unused_imports)] | |
3 | #![warn( | |
4 | clippy::all, | |
5 | clippy::style, | |
6 | clippy::mem_replace_option_with_none, | |
7 | clippy::mem_replace_with_default | |
8 | )] | |
9 | ||
cdc7bbd5 | 10 | use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList, VecDeque}; |
f20569fa XL |
11 | use std::mem; |
12 | ||
13 | fn replace_option_with_none() { | |
14 | let mut an_option = Some(1); | |
15 | let _ = an_option.take(); | |
16 | let an_option = &mut Some(1); | |
17 | let _ = an_option.take(); | |
18 | } | |
19 | ||
20 | fn replace_with_default() { | |
21 | let mut s = String::from("foo"); | |
22 | let _ = std::mem::take(&mut s); | |
cdc7bbd5 | 23 | |
f20569fa XL |
24 | let s = &mut String::from("foo"); |
25 | let _ = std::mem::take(s); | |
26 | let _ = std::mem::take(s); | |
cdc7bbd5 XL |
27 | |
28 | let mut v = vec![123]; | |
29 | let _ = std::mem::take(&mut v); | |
30 | let _ = std::mem::take(&mut v); | |
31 | let _ = std::mem::take(&mut v); | |
32 | let _ = std::mem::take(&mut v); | |
33 | ||
34 | let mut hash_map: HashMap<i32, i32> = HashMap::new(); | |
35 | let _ = std::mem::take(&mut hash_map); | |
36 | ||
37 | let mut btree_map: BTreeMap<i32, i32> = BTreeMap::new(); | |
38 | let _ = std::mem::take(&mut btree_map); | |
39 | ||
40 | let mut vd: VecDeque<i32> = VecDeque::new(); | |
41 | let _ = std::mem::take(&mut vd); | |
42 | ||
43 | let mut hash_set: HashSet<&str> = HashSet::new(); | |
44 | let _ = std::mem::take(&mut hash_set); | |
45 | ||
46 | let mut btree_set: BTreeSet<&str> = BTreeSet::new(); | |
47 | let _ = std::mem::take(&mut btree_set); | |
48 | ||
49 | let mut list: LinkedList<i32> = LinkedList::new(); | |
50 | let _ = std::mem::take(&mut list); | |
51 | ||
52 | let mut binary_heap: BinaryHeap<i32> = BinaryHeap::new(); | |
53 | let _ = std::mem::take(&mut binary_heap); | |
c295e0f8 XL |
54 | |
55 | let mut tuple = (vec![1, 2], BinaryHeap::<i32>::new()); | |
56 | let _ = std::mem::take(&mut tuple); | |
57 | ||
58 | let mut refstr = "hello"; | |
59 | let _ = std::mem::take(&mut refstr); | |
60 | ||
61 | let mut slice: &[i32] = &[1, 2, 3]; | |
62 | let _ = std::mem::take(&mut slice); | |
63 | } | |
64 | ||
65 | // lint is disabled for primitives because in this case `take` | |
66 | // has no clear benefit over `replace` and sometimes is harder to read | |
67 | fn dont_lint_primitive() { | |
68 | let mut pbool = true; | |
69 | let _ = std::mem::replace(&mut pbool, false); | |
70 | ||
71 | let mut pint = 5; | |
72 | let _ = std::mem::replace(&mut pint, 0); | |
f20569fa XL |
73 | } |
74 | ||
75 | fn main() { | |
76 | replace_option_with_none(); | |
77 | replace_with_default(); | |
c295e0f8 | 78 | dont_lint_primitive(); |
f20569fa | 79 | } |