pub struct CursorPagination {
pub cursor: Option<String>,
pub limit: u32,
}Expand description
Cursor-based pagination parameters parsed from the query string.
Reads an opaque cursor token (absent on the first page) and a limit that is clamped
the same way as Pagination. Requires the extract feature.
§Example
use axum_api_kit::{CursorPagination, CursorResponse};
use serde::Serialize;
#[derive(Serialize)]
struct Item {
id: u64,
}
async fn feed(page: CursorPagination) -> CursorResponse<Item> {
// Decode page.cursor, fetch page.limit + 1 rows, derive the next token...
let items = vec![Item { id: 1 }];
page.cursor_response(items, Some("next".into()))
}Fields§
§cursor: Option<String>Opaque cursor token for the requested page. None on the first page.
limit: u32Maximum number of items to return (clamped to 1..=Pagination::MAX_LIMIT).
Implementations§
Source§impl CursorPagination
impl CursorPagination
Sourcepub fn cursor_response<T: Serialize>(
&self,
data: Vec<T>,
next_cursor: Option<String>,
) -> CursorResponse<T>
pub fn cursor_response<T: Serialize>( &self, data: Vec<T>, next_cursor: Option<String>, ) -> CursorResponse<T>
Build a CursorResponse from this page’s items and the next-page cursor.
has_more is set to next_cursor.is_some().
Trait Implementations§
Source§impl Clone for CursorPagination
impl Clone for CursorPagination
Source§fn clone(&self) -> CursorPagination
fn clone(&self) -> CursorPagination
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CursorPagination
impl Debug for CursorPagination
impl Eq for CursorPagination
Source§impl<S> FromRequestParts<S> for CursorPagination
impl<S> FromRequestParts<S> for CursorPagination
Source§impl PartialEq for CursorPagination
impl PartialEq for CursorPagination
Source§fn eq(&self, other: &CursorPagination) -> bool
fn eq(&self, other: &CursorPagination) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CursorPagination
Auto Trait Implementations§
impl Freeze for CursorPagination
impl RefUnwindSafe for CursorPagination
impl Send for CursorPagination
impl Sync for CursorPagination
impl Unpin for CursorPagination
impl UnsafeUnpin for CursorPagination
impl UnwindSafe for CursorPagination
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<S, T> FromRequest<S, ViaParts> for T
impl<S, T> FromRequest<S, ViaParts> for T
Source§type Rejection = <T as FromRequestParts<S>>::Rejection
type Rejection = <T as FromRequestParts<S>>::Rejection
If the extractor fails it’ll use this “rejection” type. A rejection is
a kind of error that can be converted into a response.
Source§fn from_request(
req: Request<Body>,
state: &S,
) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
fn from_request( req: Request<Body>, state: &S, ) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>
Perform the extraction.
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more