The Iterator Trait and Protocol

Updated

October 31, 2026

The Iterator Trait and Protocol

In Rust, iterators are lazy sequences that produce values on demand via the Iterator trait:

fn main() {
    let v = vec![1, 2, 3];
    let mut iter = v.iter();

    assert_eq!(iter.next(), Some(&1));
    assert_eq!(iter.next(), Some(&2));
    assert_eq!(iter.next(), Some(&3));
    assert_eq!(iter.next(), None);
}