#![allow(dead_code, deprecated, unused_variables, unused_mut)] struct Counter { count: usize, } impl Counter { fn new() -> Counter { Counter { count: 0 } } } impl Iterator for Counter { type Item = usize; fn next(&mut self) -> Option { self.count += 1; if self.count < 6 { Some(self.count) } else { None } } } impl ExactSizeIterator for Counter { fn len(&self) -> usize { 5 - self.count } } fn main() { let mut counter = Counter::new(); assert_eq!(5, counter.len()); let _ = counter.next(); assert_eq!(4, counter.len()); }