summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/swap.fixed
blob: 0f8f839a0d5426fa808fbe2384875ee427ff18ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// run-rustfix

#![warn(clippy::all)]
#![allow(
    clippy::blacklisted_name,
    clippy::no_effect,
    clippy::redundant_clone,
    redundant_semicolons,
    unused_assignments
)]

struct Foo(u32);

#[derive(Clone)]
struct Bar {
    a: u32,
    b: u32,
}

fn field() {
    let mut bar = Bar { a: 1, b: 2 };

    let temp = bar.a;
    bar.a = bar.b;
    bar.b = temp;

    let mut baz = vec![bar.clone(), bar.clone()];
    let temp = baz[0].a;
    baz[0].a = baz[1].a;
    baz[1].a = temp;
}

fn array() {
    let mut foo = [1, 2];
    foo.swap(0, 1);

    foo.swap(0, 1);
}

fn slice() {
    let foo = &mut [1, 2];
    foo.swap(0, 1);

    foo.swap(0, 1);
}

fn unswappable_slice() {
    let foo = &mut [vec![1, 2], vec![3, 4]];
    let temp = foo[0][1];
    foo[0][1] = foo[1][0];
    foo[1][0] = temp;

    // swap(foo[0][1], foo[1][0]) would fail
}

fn vec() {
    let mut foo = vec![1, 2];
    foo.swap(0, 1);

    foo.swap(0, 1);
}

#[rustfmt::skip]
fn main() {
    field();
    array();
    slice();
    unswappable_slice();
    vec();

    let mut a = 42;
    let mut b = 1337;

    std::mem::swap(&mut a, &mut b);

    ; std::mem::swap(&mut a, &mut b);

    let mut c = Foo(42);

    std::mem::swap(&mut c.0, &mut a);

    ; std::mem::swap(&mut c.0, &mut a);
}