1、创建空的vector:Vec
let mut v: Vec<i32> = Vec::new();
// v.push(1);
2、创建包含初始值的vector
let v = vec![1, 2, 3];
3、丢弃vector
{
let v1 = vec![1, 2, 3];
} // 丢弃v1和其中的元素
4、读取元素
let v = vec![1, 2, 3];
let one: &i32 = &v[0];
// let four: &i32 = &v[3]; // 错误!越界
println!("one = {}", one);
println!("one = {}", *one);
match v.get(3) { // 推荐用match的方式读取元素,不会出现越界错误
Some(value) => println!("value = {}", value),
_ => println!("None"),
};
5、更新vector中的元素
let mut v2: Vec<i32> = Vec::new();
v2.push(1);
v2.push(2);
v2.push(3);
6、遍历vector
(1)不可变的遍历
for i in &v2 {
println!("i = {}", i);
}
(2)可变的遍历
for i in &mut v2 {
*i += 1;
println!("i = {}", i);
}
7、在vector中使用枚举
enum Context {
Text(String),
Float(f32),
Int(i32),
};
let c = vec![
Context::Text(String::from("string")),
Context::Int(-1),
Context::Float(0.01),
];
8、补充
let mut v = vec![1, 2, 3, 4, 5];
let first = &v[0]; // 不可变引用了可变引用
v.push(6); // 使用了可变引用
// println!("first = {}", first); // 错误!不能再使用上面的不可变引用
本节的全部源代码:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_vector/src/main.rs