A generic Index representation would conflict with one provided by Rust, and
the given function is unimplementable for trait objects, so this macro provides
an easy way to produce an Index impl that just calls slice() as expected.
A wrapper around an existing iterator to give it a historical representation
with the ability to then produce copying and referencing backtracking iterators
on the history
A backwalk through a ReferencingBacktrackingIterator’s history. Yields references to
items in the history, and can be used to walk back to a desired point.
An iterator that can be walked back on, parameterised for a lifetime
This trait is a workaround for the lack of generic associated types - it is expected
to be implemented for every lifetime, for reasons of utility