tree: 5100476d4b696e9f406b72c1bdbf2330da0d29e5 [path history] [tgz]
  1. .github/
  2. examples/
  3. src/
  4. tests/
  5. .cargo-checksum.json
  6. .cargo_vcs_info.json
  7. BUILD.bazel
  8. build.rs
  9. Cargo.lock
  10. Cargo.toml
  11. Cargo.toml.orig
  12. Cross.toml
  13. LICENSE-APACHE
  14. LICENSE-MIT
  15. README.md
third_party/rust_crates/vendor/generator-0.8.7/README.md

Build Status Current Crates.io Version Document

Generator-rs

rust stackful generator library

[dependencies]
generator = "0.8"

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

  • [x] basic send/yield with message support
  • [x] generator cancel support
  • [x] yield_from support
  • [x] panic inside generator support
  • [x] stack size tune support
  • [x] scoped static type support
  • [x] basic coroutine interface support
  • [x] 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
    • x86_64 Fuchsia
    • x86_64 Android
    • aarch64 Linux
    • aarch64 macOS
    • aarch64 Fuchsia
    • aarch64 Android
    • loongarch64 Linux
    • armv7 Linux
    • riscv64 Linux
    • powerpc64le Linux

License

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