Iterator (Rust)
Podstawowa abstrakcja sekwencji w Rauście. Trait z jedną metodą: fn next(&mut self) -> Option<Item>. Domyślnie leniwy — adaptery (map, filter, take) budują potok, który uruchamia się dopiero przy konsumpcji (collect, sum, pętla for).
Bez narzutu: vec.iter().map(|x| x*2).filter(|x| x>10).sum() kompiluje się do kodu tak optymalnego jak ręcznie napisana pętla for. Trait Iterator wraz z IntoIterator i FromIterator tworzy funkcyjny potok. Warianty: z przejęciem własności (into_iter), pożyczone (iter) i pożyczone mutowalnie (iter_mut). Crate Rayon czyni iteratory równoległe (par_iter()) banalnymi, a itertools uzupełnia brakujące kombinatory (group_by, tuple_windows). Standardowy wzorzec w idiomatycznym Auście.