遍历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);
迭代器的一些应用
// Extend an iterator
let grade = Some("A+");
let grades = vec!["B-", "C+", "D"];
for grade in grades.iter().chain(grade.iter()) {
println!("{grade}");
}
// Filter out non variants
let grades = vec![Some("A+"), None, Some("B+"), None];
let grades: Vec<&str> = grades.into_iter().flatten().collect();
println!("{grades:?}");
// Map and filter out non variants
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
: 获取所有权迭代器,用于构建新迭代器
参考