]> git.lizzy.rs Git - rust.git/blob - tests/run-pass/vecs.rs
bb9e5068f91e8e5932f0cf4d422ff46b50b852df
[rust.git] / tests / run-pass / vecs.rs
1 fn make_vec() -> Vec<u8> {
2     let mut v = Vec::with_capacity(4);
3     v.push(1);
4     v.push(2);
5     v
6 }
7
8 fn make_vec_macro() -> Vec<u8> {
9     vec![1, 2]
10 }
11
12 fn make_vec_macro_repeat() -> Vec<u8> {
13     vec![42; 5]
14 }
15
16 fn make_vec_macro_repeat_zeroed() -> Vec<u8> {
17     vec![0; 7]
18 }
19
20 fn vec_into_iter() -> u8 {
21     vec![1, 2, 3, 4]
22         .into_iter()
23         .map(|x| x * x)
24         .fold(0, |x, y| x + y)
25 }
26
27 fn vec_into_iter_rev() -> u8 {
28     vec![1, 2, 3, 4]
29         .into_iter()
30         .map(|x| x * x)
31         .fold(0, |x, y| x + y)
32 }
33
34 fn vec_into_iter_zst() -> usize {
35     vec![[0u64; 0], [0u64; 0]]
36         .into_iter()
37         .rev()
38         .map(|x| x.len())
39         .sum()
40 }
41
42 fn vec_into_iter_rev_zst() -> usize {
43     vec![[0u64; 0], [0u64; 0]]
44         .into_iter()
45         .rev()
46         .map(|x| x.len())
47         .sum()
48 }
49
50 fn vec_iter_and_mut() {
51     let mut v = vec![1,2,3,4];
52     for i in v.iter_mut() {
53         *i += 1;
54     }
55     assert_eq!(v.iter().sum::<i32>(), 2+3+4+5);
56 }
57
58 fn vec_iter_and_mut_rev() {
59     let mut v = vec![1,2,3,4];
60     for i in v.iter_mut().rev() {
61         *i += 1;
62     }
63     assert_eq!(v.iter().sum::<i32>(), 2+3+4+5);
64 }
65
66 fn vec_reallocate() -> Vec<u8> {
67     let mut v = vec![1, 2];
68     v.push(3);
69     v.push(4);
70     v.push(5);
71     v
72 }
73
74 fn main() {
75     assert_eq!(vec_reallocate().len(), 5);
76
77     assert_eq!(vec_into_iter(), 30);
78     assert_eq!(vec_into_iter_rev(), 30);
79     vec_iter_and_mut();
80     assert_eq!(vec_into_iter_zst(), 0);
81     assert_eq!(vec_into_iter_rev_zst(), 0);
82     vec_iter_and_mut_rev();
83
84     assert_eq!(make_vec().capacity(), 4);
85     assert_eq!(make_vec_macro(), [1, 2]);
86     assert_eq!(make_vec_macro_repeat(), [42; 5]);
87     assert_eq!(make_vec_macro_repeat_zeroed(), [0; 7]);
88 }