Files
2026-09-29 11:57:40 -07:00

40 lines
708 B
Rust

// example to show how to implement an iterator
struct VecIntoIter {
v: Vec<i32>,
len: usize,
i: usize,
}
impl VecIntoIter {
fn new(v: Vec<i32>) -> VecIntoIter {
Self {
len: v.len(),
v,
i: 0
}
}
}
impl Iterator for VecIntoIter {
type Item = i32;
fn next(&mut self) -> Option<Self::Item> {
if self.i >= self.len {
return None;
}
let n = self.i;
self.i += 1;
Some(self.v[n])
}
}
fn main() {
let v = vec![1, 2, 3];
let mut it = VecIntoIter::new(v);
while let Some(x) = it.next() {
println!("{x}");
}
// println!("{v:?}"); // v is consumed
}