]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/slow_vector_initialization.rs
New upstream version 1.64.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / slow_vector_initialization.rs
CommitLineData
f20569fa
XL
1use std::iter::repeat;
2
3fn main() {
4 resize_vector();
5 extend_vector();
6 mixed_extend_resize_vector();
7}
8
9fn 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));
064997fb
FG
22
23 let mut vec4 = Vec::with_capacity(len);
24 vec4.extend(repeat(0).take(vec4.capacity()));
f20569fa
XL
25}
26
27fn 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
40fn 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
064997fb
FG
54 let mut vec4 = Vec::with_capacity(len);
55 vec4.resize(vec4.capacity(), 0);
56
f20569fa
XL
57 // Reinitialization should be warned
58 vec1 = Vec::with_capacity(10);
59 vec1.resize(10, 0);
60}
61
5099ac24 62fn do_stuff(vec: &mut [u8]) {}
f20569fa
XL
63
64fn 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}