pub struct Generator<M>(/* private fields */);
Expand description
Generator struct contains only one field which it’s an unbounded receiver from unounded channel from tokio
crate
The other half of the unbounded channel is given to the GeneratorYielder
Implementations§
Source§impl<M: Send + Sync + 'static> Generator<M>
impl<M: Send + Sync + 'static> Generator<M>
Sourcepub fn create() -> (Self, GeneratorYielder<M>)
pub fn create() -> (Self, GeneratorYielder<M>)
Creates an unbounded channel and returns a Generator
and GeneratorYielder
Sourcepub fn from_generator<O: Send + Sync + 'static, F: Fn(M) -> Option<O> + Send + Sync + 'static>(
old_generator: Generator<M>,
transformer: F,
) -> Generator<O>
pub fn from_generator<O: Send + Sync + 'static, F: Fn(M) -> Option<O> + Send + Sync + 'static>( old_generator: Generator<M>, transformer: F, ) -> Generator<O>
This functions takes a owned Generator
to turn the items in that generator into another ones
but keeping the items in a generator.
It allows to pass a closure to transform the values in the old Generator
.
The transform closure has to return an Option, this allows the user to return None if something failed in the closure or it depends on some condition.
It transforms the values and sends it to the returned Generator
in a background task for a immediate response.
pub async fn next(&mut self) -> Option<M>
pub fn close(&mut self)
Auto Trait Implementations§
impl<M> Freeze for Generator<M>
impl<M> RefUnwindSafe for Generator<M>
impl<M> Send for Generator<M>where
M: Send,
impl<M> Sync for Generator<M>where
M: Send,
impl<M> Unpin for Generator<M>
impl<M> UnwindSafe for Generator<M>
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> 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