An iterator is an object that returns the items of a collection in sequence, from the first to the last. To return the following item, it uses a next() method. Here, we have an opportunity to use an Option. Because an iterator can have no more values at the last next() call, next() always returns an Option, Some(value) when there is a value and None when there are no more values to return.
The simplest object that has this behavior is a range of numbers 0..n (remember n is excluded). Every time we used a for loop like for i in 0..n the underlying iterator mechanism was put to work. Let's see an example:
// see code in Chapter 5/code/iterators.rs let mut rng = 0..7; println!("> {:?}", rng.next()); // println!("> {:?}", rng.next()); // for n in rng { print!("{} - ", n); } // prints 2 - 3 - 4 - 5 - 6
This prints the following...