A `DoubleEndedIterator` needs to track both a forward position and a reverse position, so that `next_back()` can pop from the back of the sequence.