]> git.lizzy.rs Git - rust.git/blob - tests/ui/swap.rs
Auto merge of #68717 - petrochenkov:stabexpat, r=varkor
[rust.git] / 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 }