]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
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)); | |
064997fb FG |
22 | |
23 | let mut vec4 = Vec::with_capacity(len); | |
24 | vec4.extend(repeat(0).take(vec4.capacity())); | |
f20569fa XL |
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 | ||
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 | 62 | fn do_stuff(vec: &mut [u8]) {} |
f20569fa XL |
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 | } |