mco-gen

Crates.iomco-gen
lib.rsmco-gen
version0.1.1
sourcesrc
created_at2022-02-16 07:17:36.287499
updated_at2023-12-05 12:48:48.214242
descriptionStackfull Generator Library in Rust
homepagehttps://github.com/co-rs/mco.git
repositoryhttps://github.com/co-rs/mco.git
max_upload_size
id533133
size91,024
zxj (zhuxiujia)

documentation

README

Build Status Build Status Current Crates.io Version Document

Generator-rs

rust stackful generator library

[dependencies]
generator = "0.7"

Usage

use mco_gen::{done, Gn};

fn main() {
    let g = Gn::new_scoped(|mut s| {
        let (mut a, mut b) = (0, 1);
        while b < 200 {
            std::mem::swap(&mut a, &mut b);
            b = a + b;
            s.yield_(b);
        }
        done!();
    });

    for i in g {
        println!("{}", i);
    }
}

Output

1
2
3
5
8
13
21
34
55
89
144
233

Goals

  • basic send/yield with message support

  • generator cancel support

  • yield_from support

  • panic inside generator support

  • stack size tune support

  • scoped static type support

  • basic coroutine interface support

  • stable rust support

based on this basic library

  • we can easily port python library based on generator into rust

  • coroutine framework running on multi thread

Notices

  • This crate supports below platforms, welcome to contribute with other arch and platforms

    • x86_64 Linux
    • x86_64 MacOs
    • x86_64 Windows
    • aarch64 Linux

License

This project is licensed under either of the following, at your option:

Commit count: 578

cargo fmt