]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/swap.fixed
Rollup merge of #71645 - ecstatic-morse:readme-build-doc, r=Mark-Simulacrum
[rust.git] / src / tools / clippy / tests / ui / swap.fixed
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     foo.swap(0, 1);
36
37     foo.swap(0, 1);
38 }
39
40 fn slice() {
41     let foo = &mut [1, 2];
42     foo.swap(0, 1);
43
44     foo.swap(0, 1);
45 }
46
47 fn unswappable_slice() {
48     let foo = &mut [vec![1, 2], vec![3, 4]];
49     let temp = foo[0][1];
50     foo[0][1] = foo[1][0];
51     foo[1][0] = temp;
52
53     // swap(foo[0][1], foo[1][0]) would fail
54 }
55
56 fn vec() {
57     let mut foo = vec![1, 2];
58     foo.swap(0, 1);
59
60     foo.swap(0, 1);
61 }
62
63 #[rustfmt::skip]
64 fn main() {
65     field();
66     array();
67     slice();
68     unswappable_slice();
69     vec();
70
71     let mut a = 42;
72     let mut b = 1337;
73
74     std::mem::swap(&mut a, &mut b);
75
76     ; std::mem::swap(&mut a, &mut b);
77
78     let mut c = Foo(42);
79
80     std::mem::swap(&mut c.0, &mut a);
81
82     ; std::mem::swap(&mut c.0, &mut a);
83 }