Rust 迭代器
Trait std::iter::Iterator
pub trait Iterator {
type Item;
// Required method
fn next(&mut self) -> Option<Self::Item>;
}
For loop
For 循环相当于一个语法糖, 本质也是用迭代器。
fn main() {
let v = vec![1,2,3,4,5];
for i in v {
println!("{}", i);
}
}
就相当于
fn main() {
let v = vec![1,2,3,4,5];
let mut iter = v.into_iter();
loop {
match iter.next() {
Some(i) => println!("{}", i),
None => break,
}
}
}
常用生成迭代器的方法
常用生成迭代器的方法有以下几种:
- iter() -> &T
- iter_mut() -> &mut T
- into_iter() -> T 这三个也对应所有权的三种借用方式。
itertools
itertools 是一个 Rust 的库, 提供了很多迭代器的工具函数, 用于处理迭代器。