Iterators
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 output:
Some(0)Some(1)
We see here the function next() at work, producing 0 and 1, and so on; the for loop continues until the end.
Note
Exercise:...