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