pub struct PaginationStream<Item>(/* private fields */);
Expand description

Stream specifically made to support paginators.

PaginationStream provides two primary mechanisms for accessing stream of data.

  1. With .next() (or try_next()):
let mut stream: PaginationStream<Page> = operation_to_yield_paginator();
while let Some(page) = stream.next().await {
    // process `page`
}
  1. With .collect() (or try_collect()):
let mut stream: PaginationStream<Page> = operation_to_yield_paginator();
let result = stream.collect::<Vec<Page>>().await;

PaginationStream is implemented in terms of FnStream, but the latter is meant to be used internally and not by external users.

Implementations§

source§

impl<Item> PaginationStream<Item>

source

pub fn new(stream: FnStream<Item>) -> Self

Creates a PaginationStream from the given FnStream.

source

pub async fn next(&mut self) -> Option<Item>

Consumes and returns the next Item from this stream.

source

pub fn poll_next(&mut self, cx: &mut Context<'_>) -> Poll<Option<Item>>

Poll an item from the stream

source

pub async fn collect<T: Collectable<Item>>(self) -> T

Consumes this stream and gathers elements into a collection.

source§

impl<T, E> PaginationStream<Result<T, E>>

source

pub async fn try_next(&mut self) -> Result<Option<T>, E>

Yields the next item in the stream or returns an error if an error is encountered.

source

pub async fn try_collect(self) -> Result<Vec<T>, E>

Convenience method for .collect::<Result<Vec<_>, _>().

Trait Implementations§

source§

impl<Item: Debug> Debug for PaginationStream<Item>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<Item> Freeze for PaginationStream<Item>

§

impl<Item> !RefUnwindSafe for PaginationStream<Item>

§

impl<Item> Send for PaginationStream<Item>
where Item: Send,

§

impl<Item> !Sync for PaginationStream<Item>

§

impl<Item> Unpin for PaginationStream<Item>

§

impl<Item> !UnwindSafe for PaginationStream<Item>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.