Skip to content

Xudong-Huang/generator-rs

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b99bdd7 Β· Aug 23, 2024
Oct 3, 2023
Jun 4, 2024
Oct 4, 2023
Aug 23, 2024
Apr 29, 2024
May 16, 2018
Dec 8, 2020
Jul 25, 2024
Oct 3, 2023
Dec 24, 2017
Dec 24, 2017
Mar 4, 2024
Jun 4, 2024

Repository files navigation

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

  • 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
    • x86_64 Fuchsia
    • x86_64 Android
    • aarch64 Linux
    • aarch64 macOS
    • aarch64 Fuchsia
    • aarch64 Android
    • loongarch64 Linux
    • armv7 Linux
    • riscv64 Linux

License

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