about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/manual_contains.fixed
blob: 18171f0b2b40c9ed6ce66f557dd0ab1584a08597 (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#![warn(clippy::manual_contains)]
#![allow(clippy::eq_op, clippy::useless_vec)]

fn should_lint() {
    let vec: Vec<u8> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let _ = values.contains(&4);
    //~^ manual_contains

    let vec: Vec<u32> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let _ = values.contains(&4);
    //~^ manual_contains

    let values: [u8; 6] = [3, 14, 15, 92, 6, 5];
    let _ = values.contains(&10);
    //~^ manual_contains

    let num = 14;
    let values: [u8; 6] = [3, 14, 15, 92, 6, 5];
    let _ = values.contains(&num);
    //~^ manual_contains

    let num = 14;
    let values: [u8; 6] = [3, 14, 15, 92, 6, 5];
    let _ = values.contains(&num);
    //~^ manual_contains

    let values: [u8; 6] = [3, 14, 15, 92, 6, 5];
    let _ = values.contains(&4);
    //~^ manual_contains

    let vec: Vec<u8> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let _ = values.contains(&4);
    //~^ manual_contains

    let vec: Vec<u8> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let a = &4;
    let _ = values.contains(a);
    //~^ manual_contains

    let vec = vec!["1", "2", "3", "4", "5", "6"];
    let values = &vec[..];
    let _ = values.contains(&"4");
    //~^ manual_contains

    let vec: Vec<u32> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let _ = values.contains(&(4 + 1));
    //~^ manual_contains
}

fn should_not_lint() {
    let values: [u8; 6] = [3, 14, 15, 92, 6, 5];
    let _ = values.iter().any(|&v| v > 10);

    let vec: Vec<u32> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let _ = values.iter().any(|&v| v.is_multiple_of(2));
    let _ = values.iter().any(|&v| v * 2 == 6);
    let _ = values.iter().any(|&v| v == v);
    let _ = values.iter().any(|&v| 4 == 4);
    let _ = values.contains(&4);

    let a = 1;
    let b = 2;
    let _ = values.iter().any(|&v| a == b);
    let _ = values.iter().any(|&v| a == 4);

    let vec: Vec<String> = vec!["1", "2", "3", "4", "5", "6"]
        .iter()
        .map(|&x| x.to_string())
        .collect();
    let values = &vec[..];
    let _ = values.iter().any(|v| v == "4");

    let vec: Vec<u32> = vec![1, 2, 3, 4, 5, 6];
    let values = &vec[..];
    let mut counter = 0;
    let mut count = || {
        counter += 1;
        counter
    };
    let _ = values.iter().any(|&v| v == count());
    let _ = values.iter().any(|&v| v == v * 2);
}

fn foo(values: &[u8]) -> bool {
    values.contains(&10)
    //~^ manual_contains
}

fn bar(values: [u8; 3]) -> bool {
    values.contains(&10)
    //~^ manual_contains
}