1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//1.创建空的vector: Vec<T>
//2.创建包含初始值的vector
//3.丢弃vector
//4.读取元素
//5.更新
//6.遍历
//7.使用枚举
fn main() {
//1.创建
let mut v: Vec<i32> = Vec::new();
//创建变量和之前一样,如果是不可变变量,就不能够改变了
//下面的会报错
//let v: Vec<i32> = Vec::new();
//vc.push(1);
vec.push(1);
//2.
let v = vec![1,2,3];

//3.
{
let v1 = vec![1,2,3];
}
//4.
let one: &i32 = &v[0];
println!("oen = {}",one);//进行了自动转换
println!("one = {}",*one);//实际上应该为下面这种方法
//(2)推荐的方法
//因为这种方法对越界进行处理
match v.get(1) {
Some(value) => println!("value = {}",value),
_ => println!("None"),
}
println!("Hello, world!");
//5.
let mut v2: Vec<i32> = Vec::new();
v2.push(1);
v2.push(2);
v2.push(3);

//6.遍历
//(1)不可变遍历
for i in &v2 {
println!("i = {}",i);
}
//(2)可变遍历
//相当于可变引用
for i in &mut v2 {
*i += 1;
println!("i = {}",i);
}
//7
//也就是说vec也可以放置不同类型的元素
enum Context {
Text(String),
Float(f32),
Int(i32),
};

let c = vec![
Context::Text(String::from("String")),
Context::Int(-1),
Context::Float(0,001)
];
//8.
let mut v = vec![1,2,3,4,5];
//同时使用了可变引用和不可变引用,会报错
//let first = &v[0];
//v.push(6);
//println!("first = {}",first);

}