21 releases

✓ Uses Rust 2018 edition

0.6.20 Feb 4, 2020
0.6.19 Oct 24, 2019
0.6.18 Sep 6, 2019
0.6.17 Jul 31, 2019
0.2.0 Nov 12, 2015

#34 in Data structures

Download history 3046/week @ 2020-02-06 2234/week @ 2020-02-13 2171/week @ 2020-02-20 2002/week @ 2020-02-27 1365/week @ 2020-03-05 1464/week @ 2020-03-12 2018/week @ 2020-03-19 1569/week @ 2020-03-26 1415/week @ 2020-04-02 1290/week @ 2020-04-09 1674/week @ 2020-04-16 2212/week @ 2020-04-23 1765/week @ 2020-04-30 1921/week @ 2020-05-07 1227/week @ 2020-05-14 1280/week @ 2020-05-21

12,291 downloads per month
Used in 17 crates (4 directly)

MIT/Apache

70KB
2K SLoC

Rust 1.5K SLoC // 0.2% comments Assembly 192 SLoC // 0.1% comments GNU Style Assembly 79 SLoC

Build Status Build status Current Crates.io Version Document

Generator-rs

rust stackfull generator library

[dependencies]
generator = "0.6"

Usage

#[macro_use]
extern crate generator;
use generator::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

License

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

Dependencies

~250KB