seekable_iterator/
lib.rs

1// See https://linebender.org/blog/doc-include for this README inclusion strategy
2// File links are not supported by rustdoc
3//!
4//! [LICENSE-APACHE]: https://github.com/robofinch/seekable-iterator/blob/main/LICENSE-APACHE
5//! [LICENSE-MIT]: https://github.com/robofinch/seekable-iterator/blob/main/LICENSE-MIT
6//!
7//! [`PooledIterator`]: PooledIterator
8//!
9//! [`SeekableIterator`]: SeekableIterator
10//! [`SeekableLendingIterator`]: SeekableLendingIterator
11//! [`SeekablePooledIterator`]: SeekablePooledIterator
12//!
13//! [`CursorIterator`]: CursorIterator
14//! [`CursorLendingIterator`]: CursorLendingIterator
15//! [`CursorPooledIterator`]: CursorPooledIterator
16//!
17//! [`Seekable`]: Seekable
18//! [`Comparator`]: Comparator
19//! [`OrdComparator`]: OrdComparator
20//!
21//! [`Ord`]: Ord
22//! [`FusedIterator`]: core::iter::FusedIterator
23#![cfg_attr(feature = "lender", doc = " [`lender::Lender`]: lender::Lender")]
24#![cfg_attr(
25    feature = "lending-iterator",
26    doc = " [`lending_iterator::LendingIterator`]: lending_iterator::LendingIterator",
27)]
28#![cfg_attr(
29    feature = "alloc",
30    doc = " [`MergingIter`]: merging_iter::MergingIter",
31)]
32#![cfg_attr(
33    feature = "alloc",
34    doc = " [`PooledIter`]: pooled_iter::PooledIter",
35)]
36#![cfg_attr(
37    feature = "std",
38    doc = " [`ThreadsafePooledIter`]: threadsafe_pooled_iter::ThreadsafePooledIter",
39)]
40//!
41//! <style>
42//! .rustdoc-hidden { display: none; }
43//! </style>
44#![cfg_attr(doc, doc = include_str!("../README.md"))]
45
46#![cfg_attr(
47    feature = "lending-iterator",
48    expect(
49        non_ascii_idents, clippy::disallowed_script_idents,
50        reason = "`gat` uses non-ascii character",
51    ),
52)]
53
54#![cfg_attr(docsrs, feature(doc_cfg))]
55
56#![no_std]
57
58#[cfg(feature = "alloc")]
59extern crate alloc;
60#[cfg(feature = "std")]
61extern crate std;
62
63mod comparator;
64mod cursor;
65mod pooled;
66mod seekable;
67mod seekable_iterators;
68
69mod lending_iterator_support;
70
71#[cfg(feature = "alloc")]
72mod merging_iter;
73#[cfg(feature = "anchored-pool")]
74mod pooled_iter;
75#[cfg(feature = "anchored-pool")]
76mod threadsafe_pooled_iter;
77
78#[cfg(test)]
79mod test_iter;
80
81// TODO: adapter for cursor traits and `Seekable` that applies `Borrow::borrow` to input keys.
82// Note sure if it's useful though.
83
84#[cfg(feature = "lender")]
85mod lender_adapter;
86#[cfg(feature = "lending-iterator")]
87mod lending_iterator_adapter;
88
89
90pub use self::{
91    comparator::{Comparator, OrdComparator},
92    cursor::{CursorIterator, CursorLendingIterator, CursorPooledIterator},
93    lending_iterator_support::{ImplyBound, LendItem, LentItem},
94    pooled::{OutOfBuffers, PooledIterator},
95    seekable::{ItemToKey, Seekable},
96    seekable_iterators::{SeekableIterator, SeekableLendingIterator, SeekablePooledIterator},
97};
98
99#[cfg(feature = "lender")]
100#[cfg_attr(docsrs, doc(cfg(feature = "lender")))]
101pub use self::lender_adapter::{LenderAdapter, PooledLenderAdapter};
102#[cfg(feature = "lending-iterator")]
103#[cfg_attr(docsrs, doc(cfg(feature = "lending-iterator")))]
104pub use self::lending_iterator_adapter::{LendingIteratorAdapter, PooledLendingIteratorAdapter};
105
106#[cfg(feature = "alloc")]
107#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
108pub use self::merging_iter::MergingIter;
109#[cfg(feature = "anchored-pool")]
110#[cfg_attr(docsrs, doc(cfg(feature = "anchored-pool")))]
111pub use self::{
112    pooled_iter::{PooledIter, PoolItem},
113    threadsafe_pooled_iter::{ThreadsafePooledIter, ThreadsafePoolItem},
114};