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