]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/slow_vector_initialization.rs
Rollup merge of #102110 - CleanCut:migrate_rustc_passes_diagnostics, r=davidtwco
[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     let mut vec4 = Vec::with_capacity(len);
24     vec4.extend(repeat(0).take(vec4.capacity()));
25 }
26
27 fn mixed_extend_resize_vector() {
28     // Mismatching len
29     let mut mismatching_len = Vec::with_capacity(30);
30     mismatching_len.extend(repeat(0).take(40));
31
32     // Slow initialization
33     let mut resized_vec = Vec::with_capacity(30);
34     resized_vec.resize(30, 0);
35
36     let mut extend_vec = Vec::with_capacity(30);
37     extend_vec.extend(repeat(0).take(30));
38 }
39
40 fn resize_vector() {
41     // Resize with constant expression
42     let len = 300;
43     let mut vec1 = Vec::with_capacity(len);
44     vec1.resize(len, 0);
45
46     // Resize mismatch len
47     let mut vec2 = Vec::with_capacity(200);
48     vec2.resize(10, 0);
49
50     // Resize with len expression
51     let mut vec3 = Vec::with_capacity(len - 10);
52     vec3.resize(len - 10, 0);
53
54     let mut vec4 = Vec::with_capacity(len);
55     vec4.resize(vec4.capacity(), 0);
56
57     // Reinitialization should be warned
58     vec1 = Vec::with_capacity(10);
59     vec1.resize(10, 0);
60 }
61
62 fn do_stuff(vec: &mut [u8]) {}
63
64 fn extend_vector_with_manipulations_between() {
65     let len = 300;
66     let mut vec1: Vec<u8> = Vec::with_capacity(len);
67     do_stuff(&mut vec1);
68     vec1.extend(repeat(0).take(len));
69 }