遍历Vec
let v = vec![1, 2, 3];
for i in &v {
println!("{}", i);
}
let mut v = vec![1, 2, 3];
for i in &mut v {
*i += 50;
}
let v1 = vec![1, 2, 3]
let v1_iter = v1.iter()
for val in v1_iter {
println!("Got: {}", val)
}
let mut v1 = vec![1, 2, 3]
let v1_iter = v1.iter_mut()
for val in v1_iter {
*val += 50
}
向Vec中添加元素
let grade = "A+"
let mut grades = vec!["B-", "C+", "D"]
grades.push(grade)
向Vec中添加可选原色
let grade = Some("A+");
let mut grades = vec!["B-", "C+", "D"];
if let Some(grade) = grade {
grades.push(grade)
}
grades.extend(grade);
迭代器的一些应用
let grade = Some("A+");
let grades = vec!["B-", "C+", "D"];
for grade in grades.iter().chain(grade.iter()) {
println!("{grade}");
}
let grades = vec![Some("A+"), None, Some("B+"), None];
let grades: Vec<&str> = grades.into_iter().flatten().collect();
println!("{grades:?}");
let grades = ["3.8", "B+", "4.0", "A", "2.7"];
let grades: Vec<f32> = grades.iter().filter_map(|s| s.parse().ok()).collect();
println!("{grades:?}");
迭代器区别
iter: 普通迭代器
iter_mut: 可变迭代器,用于修改迭代器元素
into_iter: 获取所有权迭代器,用于构建新迭代器
参考