Traits
Provides:
SeekableIterator,SeekableLendingIterator, andSeekablePooledIteratortraits, for circular iterators that can move backwards or forwards and seek.PooledIteratortrait, for iterators that would normally be a lending iterator, but use a buffer pool to lend out multiple items at the same time.CursorIterator,CursorLendingIterator, andCursorPooledIteratortraits, for circular iterators that can move backwards or forwards by one element.Seekabletrait, with all the seeking methods required by theSeekable*Iteratortraits.Comparatortrait, for comparisons done to seek.
Adapters to lender::Lender and lending_iterator::LendingIterator are provided for the
lending iterator trait.
Semantics
The PooledIterator trait makes roughly the same semantic assumptions about the iterator as
a normal iterator.
However, the Cursor*Iterator and Seekable*Iterator traits assume that an implementor is a
circular iterator over some ordered collection; the iterator is made circular by adding a phantom
element before the first element and after the last element of the ordered collection. The iterator
is thus not a FusedIterator, as after iteration over the collection is completed, the iterator
wraps back around to the start.
The PooledIterator and Cursor*Iterator traits do not expose any comparator that the ordered
collection and iterator might be using, but the Seekable and Seekable*Iterator traits do
expose it via a Comparator generic. A DefaultComparator struct is provided that can compare
keys that implement Ord, using their Ord implementation.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.