Rust iterators: Difference between revisions
From wikinotes
Line 2: | Line 2: | ||
Like python generators, ruby enumerators, etc. | Like python generators, ruby enumerators, etc. | ||
= | = Implement an Iterator = | ||
<blockquote> | <blockquote> | ||
This will keep on iterating over weekdays infinitely. | This will keep on iterating over weekdays infinitely. |
Revision as of 20:12, 9 February 2023
Iterators are lazily evaluated sequences of items.
Like python generators, ruby enumerators, etc.
Implement an Iterator
This will keep on iterating over weekdays infinitely.
#[derive(Debug)] enum Weekday { MON = 0, TUE, WED, THU, FRI, SAT, SUN, } impl Iterator for Weekday { type Item = Weekday; fn next(&mut self) -> Option<Self::Item> { let day = match self { Weekday::MON => Weekday::TUE, Weekday::TUE => Weekday::WED, Weekday::WED => Weekday::THU, Weekday::THU => Weekday::FRI, Weekday::FRI => Weekday::SAT, Weekday::SAT => Weekday::SUN, Weekday::SUN => Weekday::MON, }; Some(day) } } fn main() { let mut day = Weekday::SAT; day.next(); day.next(); matches!(day, Weekday::MON); println!("success"); }