35 个版本

0.8.2 2024 年 7 月 25 日
0.8.1 2024 年 3 月 6 日
0.7.6 2024 年 2 月 27 日
0.7.5 2023 年 6 月 24 日
0.2.0 2015 年 11 月 12 日

#31数据结构

Download history 81212/week @ 2024-05-04 95788/week @ 2024-05-11 100489/week @ 2024-05-18 103408/week @ 2024-05-25 169527/week @ 2024-06-01 149763/week @ 2024-06-08 152397/week @ 2024-06-15 181061/week @ 2024-06-22 105400/week @ 2024-06-29 96246/week @ 2024-07-06 101937/week @ 2024-07-13 110576/week @ 2024-07-20 100935/week @ 2024-07-27 98076/week @ 2024-08-03 96132/week @ 2024-08-10 81500/week @ 2024-08-17

396,022 每月下载量
用于 1,024 个 (12 直接)

MIT/Apache

98KB
2.5K SLoC

Rust 2K SLoC // 0.2% comments GNU Style Assembly 415 SLoC // 0.0% comments

Build Status Current Crates.io Version Document

Generator-rs

rust 堆栈生成器库

[dependencies]
generator = "0.8"

用法

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);
    }
}

输出

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

目标

  • 基本发送/产生支持消息
  • 生成器取消支持
  • yield_from 支持
  • 生成器内 panic 支持
  • 堆栈大小调整支持
  • 作用域静态类型支持
  • 基本协程接口支持
  • 稳定 Rust 支持

基于此基本库

  • 我们可以轻松地将基于生成器的 Python 库移植到 Rust
  • 多线程运行的协程框架

注意

  • 此包支持以下平台,欢迎为其他架构和平台做出贡献

    • 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

许可证

本项目许可方式任选其一

依赖项

~0–35MB
~529K SLoC