Macro genawaiter::stack::let_gen_using
source · macro_rules! let_gen_using { ($name:ident, $producer:expr $(,)?) => { ... }; }
Expand description
Creates a generator using a producer defined elsewhere.
The first argument is the name of the resulting variable.
ⓘ
let_gen!(my_generator, { /* ... */ });
// Think of this as the spiritual equivalent of:
let mut my_generator = Gen::new(/* ... */);
The second line is the producer that will be used. It can be one of these two things:
-
The result of [
stack_producer!
] orstack_producer_fn!
-
A function with this type:
ⓘasync fn producer(co: Co<'_, Yield, Resume>) -> Completion { /* ... */ } // which is equivalent to: fn producer(co: Co<'_, Yield, Resume>) -> impl Future<Output = Completion> { /* ... */ }
This macro is a shortcut for creating both a generator and its backing state
(called a Shelf
). If you (or your IDE) dislike
macros, you can also do the bookkeeping by hand by using
Gen::new
, though note that this requires you
to trade away safety.