]> git.proxmox.com Git - rustc.git/blob - src/tools/clippy/tests/ui/swap.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / swap.rs
1 // run-rustfix
2
3 #![warn(clippy::all)]
4 #![allow(
5 clippy::blacklisted_name,
6 clippy::no_effect,
7 clippy::redundant_clone,
8 redundant_semicolons,
9 unused_assignments
10 )]
11
12 struct Foo(u32);
13
14 #[derive(Clone)]
15 struct Bar {
16 a: u32,
17 b: u32,
18 }
19
20 fn field() {
21 let mut bar = Bar { a: 1, b: 2 };
22
23 let temp = bar.a;
24 bar.a = bar.b;
25 bar.b = temp;
26
27 let mut baz = vec![bar.clone(), bar.clone()];
28 let temp = baz[0].a;
29 baz[0].a = baz[1].a;
30 baz[1].a = temp;
31 }
32
33 fn array() {
34 let mut foo = [1, 2];
35 let temp = foo[0];
36 foo[0] = foo[1];
37 foo[1] = temp;
38
39 foo.swap(0, 1);
40 }
41
42 fn slice() {
43 let foo = &mut [1, 2];
44 let temp = foo[0];
45 foo[0] = foo[1];
46 foo[1] = temp;
47
48 foo.swap(0, 1);
49 }
50
51 fn unswappable_slice() {
52 let foo = &mut [vec![1, 2], vec![3, 4]];
53 let temp = foo[0][1];
54 foo[0][1] = foo[1][0];
55 foo[1][0] = temp;
56
57 // swap(foo[0][1], foo[1][0]) would fail
58 }
59
60 fn vec() {
61 let mut foo = vec![1, 2];
62 let temp = foo[0];
63 foo[0] = foo[1];
64 foo[1] = temp;
65
66 foo.swap(0, 1);
67 }
68
69 #[rustfmt::skip]
70 fn main() {
71 field();
72 array();
73 slice();
74 unswappable_slice();
75 vec();
76
77 let mut a = 42;
78 let mut b = 1337;
79
80 a = b;
81 b = a;
82
83 ; let t = a;
84 a = b;
85 b = t;
86
87 let mut c = Foo(42);
88
89 c.0 = a;
90 a = c.0;
91
92 ; let t = c.0;
93 c.0 = a;
94 a = t;
95 }