Function gen

Source
pub fn gen<Fut, Y, R>(fut: impl FnOnce(Yield<Y>) -> Fut) -> AsyncGen<Fut, Y>
where Fut: Future<Output = Return<R>>,
Expand description

Creates a new generator, which implements the AsyncGenerator trait.

Also see gen! macro for more details.

ยงExamples

use async_gen::{gen, AsyncGen, AsyncGenerator, Return};
use std::future::Future;

fn example() {
    let g = gen(|mut c| async {
        c.yield_(42).await;
        c.return_("42")
    });

    check_type_1(&g);
    check_type_2(&g);
}
fn check_type_1(_: &AsyncGen<impl Future<Output = Return<&'static str>>, i32>) {}
fn check_type_2(_: &impl AsyncGenerator<Yield = i32, Return = &'static str>) {}