#![cfg_attr(docsrs, feature(doc_cfg))]
#![doc = include_str!("doc/Main.md")]
#[cfg(feature = "local")]
#[cfg_attr(docsrs, doc(cfg(feature = "local")))]
pub mod local;
#[cfg(feature = "mt")]
pub mod mt;
#[cfg(feature = "mutable")]
#[cfg_attr(docsrs, doc(cfg(feature = "mutable")))]
pub use local::mutable;
#[cfg(feature = "dynamic")]
#[cfg_attr(docsrs, doc(cfg(feature = "dynamic")))]
pub use mt::dynamic;
#[cfg(feature = "mt")]
#[doc = include_str!("doc/prelude")]
pub mod prelude {
pub use crate::mt::prelude::*;
}
#[cfg(feature = "mt")]
pub use crate::mt::*;
pub struct TurnedPage<I, R> {
pub items: I,
pub next_request: Option<R>,
}
impl<I, R> TurnedPage<I, R> {
pub fn new(items: I, next_request: Option<R>) -> Self {
Self {
items,
next_request,
}
}
pub fn next(items: I, next_request: R) -> Self {
Self {
items,
next_request: Some(next_request),
}
}
pub fn last(items: I) -> Self {
Self {
items,
next_request: None,
}
}
}
pub trait RequestAhead {
fn next_request(&self) -> Self;
}
#[allow(dead_code)]
#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
pub enum Limit {
#[default]
None,
Pages(usize),
}
mod internal;
#[cfg(test)]
mod test_utils;