]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/slow_vector_initialization.rs
Rollup merge of #84221 - ABouttefeux:generic-arg-elision, r=estebank
[rust.git] / src / tools / clippy / tests / ui / slow_vector_initialization.rs
1 use std::iter::repeat;
2
3 fn main() {
4     resize_vector();
5     extend_vector();
6     mixed_extend_resize_vector();
7 }
8
9 fn extend_vector() {
10     // Extend with constant expression
11     let len = 300;
12     let mut vec1 = Vec::with_capacity(len);
13     vec1.extend(repeat(0).take(len));
14
15     // Extend with len expression
16     let mut vec2 = Vec::with_capacity(len - 10);
17     vec2.extend(repeat(0).take(len - 10));
18
19     // Extend with mismatching expression should not be warned
20     let mut vec3 = Vec::with_capacity(24322);
21     vec3.extend(repeat(0).take(2));
22 }
23
24 fn mixed_extend_resize_vector() {
25     // Mismatching len
26     let mut mismatching_len = Vec::with_capacity(30);
27     mismatching_len.extend(repeat(0).take(40));
28
29     // Slow initialization
30     let mut resized_vec = Vec::with_capacity(30);
31     resized_vec.resize(30, 0);
32
33     let mut extend_vec = Vec::with_capacity(30);
34     extend_vec.extend(repeat(0).take(30));
35 }
36
37 fn resize_vector() {
38     // Resize with constant expression
39     let len = 300;
40     let mut vec1 = Vec::with_capacity(len);
41     vec1.resize(len, 0);
42
43     // Resize mismatch len
44     let mut vec2 = Vec::with_capacity(200);
45     vec2.resize(10, 0);
46
47     // Resize with len expression
48     let mut vec3 = Vec::with_capacity(len - 10);
49     vec3.resize(len - 10, 0);
50
51     // Reinitialization should be warned
52     vec1 = Vec::with_capacity(10);
53     vec1.resize(10, 0);
54 }
55
56 fn do_stuff(vec: &mut Vec<u8>) {}
57
58 fn extend_vector_with_manipulations_between() {
59     let len = 300;
60     let mut vec1: Vec<u8> = Vec::with_capacity(len);
61     do_stuff(&mut vec1);
62     vec1.extend(repeat(0).take(len));
63 }