study_rust_example/common_collection/
vector_study.rs1fn create_vector() -> Vec<i32> {
2 let v1: Vec<i32> = Vec::new();
4 let v2 = vec![1, 23, 456];
5 println!("v1 {:?}", v1);
6 println!("v2 {:?}", v2);
7 return v1;
8}
9
10fn update_vector_get_first_ele(v: &mut Vec<i32>, value: i32) -> Option<&i32> {
11 v.push(value);
12 v.push(value + 2);
13 v.push(value * 3);
14 return v.get(0);
15}
16
17fn get_ele_from_index_get_method(v: &Vec<i32>, index: usize) -> &i32 {
18 let value = v.get(index);
19 match value {
20 None => {
21 println!("index ele is null.");
22 return &(-1);
23 }
24 Some(value) => {
25 return value;
26 }
27 }
28}
29
30fn get_ele_from_index(v: &Vec<i32>, index: usize) -> i32 {
31 let value = v[index];
32 return value;
33}
34
35fn drop_vec_end_ele(v: &mut Vec<i32>) {
36 v.pop();
37}
38
39fn iterator_vector_twice(v: &mut Vec<i32>) {
40 println!("iterator_vector_twice for ... in:");
41 for val_ref in v {
42 *val_ref *= 2;
43 }
44}
45
46fn iterator_vector(v: &Vec<i32>) {
47 println!("iterator_vector for ... in:");
48 for val in v {
49 print!("{} ", val);
50 }
51}
52
53#[derive(Debug)]
54enum SpreadsheetCell {
55 Int(i32),
56 Float(f64),
57 Text(String),
58}
59
60fn enum_store_mul_type_vector() {
61 let row = vec![
62 SpreadsheetCell::Int(23),
63 SpreadsheetCell::Float(3.12),
64 SpreadsheetCell::Text(String::from("hello vector.")),
65 ];
66 for val in row {
67 println!("{:?}", val);
68 }
69}
70
71pub fn vector_usage_study() {
72 let mut vec1: Vec<i32> = Vec::new();
73 vec1 = create_vector();
74 let values: [i32; 3] = [12, 23, 43];
75 {
76 let first_value = update_vector_get_first_ele(&mut vec1, 32);
77 println!("first value: {:?}", first_value);
78 }
79 println!("vec1 {:?}", vec1);
80 let ele = get_ele_from_index_get_method(&vec1, 0);
81 println!("vec1 {:?}, ele: {}", vec1, ele);
82 let ele2 = get_ele_from_index(&vec1, 0);
83 println!("vec1 {:?}, ele2: {}", vec1, ele2);
84 {
85 iterator_vector_twice(&mut vec1);
86 println!("vec1 twice: {:?}", vec1);
87 }
88 iterator_vector(&vec1);
89 enum_store_mul_type_vector();
90 {
91 drop_vec_end_ele(&mut vec1);
92 println!("vec1 drop: {:?}", vec1);
93 }
94}