]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/same_item_push.rs
Rollup merge of #76201 - denisvasilik:intra-doc-links-core-panic, r=kennytm
[rust.git] / src / tools / clippy / tests / ui / same_item_push.rs
1 #![warn(clippy::same_item_push)]
2
3 fn mutate_increment(x: &mut u8) -> u8 {
4     *x += 1;
5     *x
6 }
7
8 fn increment(x: u8) -> u8 {
9     x + 1
10 }
11
12 fn main() {
13     // Test for basic case
14     let mut spaces = Vec::with_capacity(10);
15     for _ in 0..10 {
16         spaces.push(vec![b' ']);
17     }
18
19     let mut vec2: Vec<u8> = Vec::new();
20     let item = 2;
21     for _ in 5..=20 {
22         vec2.push(item);
23     }
24
25     let mut vec3: Vec<u8> = Vec::new();
26     for _ in 0..15 {
27         let item = 2;
28         vec3.push(item);
29     }
30
31     let mut vec4: Vec<u8> = Vec::new();
32     for _ in 0..15 {
33         vec4.push(13);
34     }
35
36     // Suggestion should not be given as pushed variable can mutate
37     let mut vec5: Vec<u8> = Vec::new();
38     let mut item: u8 = 2;
39     for _ in 0..30 {
40         vec5.push(mutate_increment(&mut item));
41     }
42
43     let mut vec6: Vec<u8> = Vec::new();
44     let mut item: u8 = 2;
45     let mut item2 = &mut mutate_increment(&mut item);
46     for _ in 0..30 {
47         vec6.push(mutate_increment(item2));
48     }
49
50     let mut vec7: Vec<usize> = Vec::new();
51     for (a, b) in [0, 1, 4, 9, 16].iter().enumerate() {
52         vec7.push(a);
53     }
54
55     let mut vec8: Vec<u8> = Vec::new();
56     for i in 0..30 {
57         vec8.push(increment(i));
58     }
59
60     let mut vec9: Vec<u8> = Vec::new();
61     for i in 0..30 {
62         vec9.push(i + i * i);
63     }
64
65     // Suggestion should not be given as there are multiple pushes that are not the same
66     let mut vec10: Vec<u8> = Vec::new();
67     let item: u8 = 2;
68     for _ in 0..30 {
69         vec10.push(item);
70         vec10.push(item * 2);
71     }
72
73     // Suggestion should not be given as Vec is not involved
74     for _ in 0..5 {
75         println!("Same Item Push");
76     }
77
78     struct A {
79         kind: u32,
80     }
81     let mut vec_a: Vec<A> = Vec::new();
82     for i in 0..30 {
83         vec_a.push(A { kind: i });
84     }
85     let mut vec12: Vec<u8> = Vec::new();
86     for a in vec_a {
87         vec12.push(2u8.pow(a.kind));
88     }
89
90     // Fix #5902
91     let mut vec13: Vec<u8> = Vec::new();
92     let mut item = 0;
93     for _ in 0..10 {
94         vec13.push(item);
95         item += 10;
96     }
97 }