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.
This crate contains array-based data structures used by the core Cretonne code generator which use densely numbered entity references as mapping keys.