Provides:
-
SeekableIterator
,SeekableLendingIterator
, andSeekablePooledIterator
traits, for circular iterators that can move backwards or forwards and seek. -
PooledIterator
trait, 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
, andCursorPooledIterator
traits, for circular iterators that can move backwards or forwards by one element. -
Seekable
trait, with all the seeking methods required by theSeekable*Iterator
traits. -
Comparator
trait, for comparisons done to seek.
Adapters to lender::Lender
and lending_iterator::LendingIterator
are provided for the
lending iterator trait.
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.
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.