30 releases

0.7.3 Feb 23, 2023
0.7.2 Dec 7, 2022
0.7.1 Jul 17, 2022
0.7.0 Mar 30, 2021
0.2.0 Nov 12, 2015

#67 in Data structures

Download history 16760/week @ 2022-12-05 18672/week @ 2022-12-12 19189/week @ 2022-12-19 13832/week @ 2022-12-26 17513/week @ 2023-01-02 21411/week @ 2023-01-09 18280/week @ 2023-01-16 18376/week @ 2023-01-23 19848/week @ 2023-01-30 19851/week @ 2023-02-06 24003/week @ 2023-02-13 26399/week @ 2023-02-20 29399/week @ 2023-02-27 28475/week @ 2023-03-06 23621/week @ 2023-03-13 24561/week @ 2023-03-20

108,588 downloads per month
Used in 475 crates (7 directly)

MIT/Apache

83KB
2K SLoC

Rust 1.5K SLoC // 0.2% comments Assembly 190 SLoC // 0.1% comments GNU Style Assembly 170 SLoC // 0.0% comments

Build Status Current Crates.io Version Document

Generator-rs

rust stackful generator library

[dependencies]
generator = "0.7"

Usage

use generator::{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:

Dependencies

~0–43MB
~704K SLoC