#generator #stable #async-await #gen #async #coroutine

macro async-gen-macros

Async generator in stable rust using async/await

4 releases (2 breaking)

0.3.0 Jul 9, 2023
0.2.1 Jun 24, 2023
0.2.0 Jun 22, 2023
0.1.0 Jun 20, 2023

#62 in #gen

Download history 133/week @ 2024-11-22 183/week @ 2024-11-29 80/week @ 2024-12-06 128/week @ 2024-12-13 65/week @ 2024-12-20 123/week @ 2024-12-27 113/week @ 2025-01-03 121/week @ 2025-01-10 88/week @ 2025-01-17 41/week @ 2025-01-24 45/week @ 2025-01-31 57/week @ 2025-02-07 79/week @ 2025-02-14 85/week @ 2025-02-21 43/week @ 2025-02-28 20/week @ 2025-03-07

238 downloads per month
Used in 2 crates (via async-gen)

MIT license

5KB
106 lines

This library provides a way to create asynchronous generator using the async/await feature in stable Rust.

It is similar to async-stream, But closely mimics the Coroutine API, Allowing the generator also return a value upon completion, in addition to yielding intermediate values.

Installation

Add it as a dependency to your Rust project by adding the following line to your Cargo.toml file:

[dependencies]
async-gen = "0.2"

Examples

use std::pin::pin;
use async_gen::{gen, GeneratorState};

#[tokio::main]
async fn main() {
    let g = gen! {
        yield 42;
        return "42"
    };
    let mut g = pin!(g);
    assert_eq!(g.resume().await, GeneratorState::Yielded(42));
    assert_eq!(g.resume().await, GeneratorState::Complete("42"));
}

No runtime deps