【Rust】迭代器(一)
阿新 • • 發佈:2022-05-28
環境
- Time 2022-03-22
- Rust 1.59.0
示例
iter
生成一個迭代器,可變版本 iter_mut
,所有權版本 into_iter
。
fn main() {
let vec = vec![0, 1, 2, 3, 4];
let iter = vec.iter();
println!("{:?}", iter);
}
next
獲取下一個元素,沒有返回 None。
fn main() { let vec = vec![0, 1, 2, 3, 4]; let mut iter = vec.iter(); println!("{:?}", iter.next()); println!("{:?}", iter.next()); println!("{:?}", iter.next()); }
count
統計迭代器中的元素的數量。
fn main() {
let vec = vec![0, 1, 2, 3, 4];
println!("{:?}", vec.iter().count()); // 可以直接使用 len 方法
}
last
獲取最後一個元素。
fn main() {
let vec = vec![0, 1, 2, 3, 4];
println!("{:?}", vec.iter().last());
}
nth
獲取第幾個元素。
fn main() { let vec = vec![0, 1, 2, 3, 4]; println!("{:?}", vec.iter().nth(2)); // get 方法可以替代 }
step_by
設定迭代步長。
fn main() {
let vec = vec![0, 1, 2, 3, 4];
let mut iter = vec.iter().step_by(2);
println!("{:?}", iter.next());
println!("{:?}", iter.next());
}
chain
連線兩個迭代器。
fn main() { let vec1 = vec![0, 1, 2, 3, 4]; let vec2 = vec![5, 6, 7, 8, 9]; let chain = vec1.iter().chain(&vec2); println!("{:?}", chain); }
zip
壓縮兩個迭代器。
fn main() {
let vec1 = vec![0, 1, 2, 3, 4];
let vec2 = vec![5, 6, 7, 8, 9];
let zip = vec1.iter().zip(&vec2);
for ele in zip {
println!("{:?}", ele);
}
}
總結
瞭解了迭代器中相關的一些方法。