rust_generator

Crates.iorust_generator
lib.rsrust_generator
version0.1.2
created_at2025-04-14 20:30:29.597265+00
updated_at2025-04-15 12:33:24.515832+00
descriptionA simple generator base on async rust! No experimental needed!
homepage
repositoryhttps://github.com/Toby-Shi-cloud/rust_generator
max_upload_size
id1633348
size12,527
Toby Shi (Toby-Shi-cloud)

documentation

README

Rust Generator

A simple generator base on async rust! No experimental needed!

Example

Code use rust_generator:

#[rust_generator::generator]
fn fib() -> impl Iterator<Item = usize> {
    let mut n1 = 1;
    let mut n2 = 1;
    let mut n3 = 2;
    // note: there is no need to import yield_,
    // because yield_ is just act like an attribute and
    // will be replaced when rust_generator::generator is expanded.
    yield_!(n1);
    // `xxx.await` is also an alternative.
    n2.await;
    loop {
        yield_!(n3);
        n1 = n2;
        n2 = n3;
        n3 = n1 + n2;
    }
}

fn main() {
    for x in fib().take(10) {
        println!("{x}");
    }
}

Code use experimental rust:

fn fib() -> impl Iterator<Item = usize> {
    gen {
        let mut n1 = 1;
        let mut n2 = 1;
        let mut n3 = 2;
        yield n1;
        yield n2;
        loop {
            yield n3;
            n1 = n2;
            n2 = n3;
            n3 = n1 + n2;
        }
    }
}
Commit count: 7

cargo fmt