#async-await #generator #coroutine #yield #await #async

genawaiter-proc-macro

生成器(genawaiter)的进程宏

2 个版本

0.99.1 2020年3月8日
0.99.0 2020年2月16日

#32 in #yield

Download history 8829/week @ 2024-03-14 9138/week @ 2024-03-21 9307/week @ 2024-03-28 8642/week @ 2024-04-04 9064/week @ 2024-04-11 9248/week @ 2024-04-18 9858/week @ 2024-04-25 7684/week @ 2024-05-02 10441/week @ 2024-05-09 10457/week @ 2024-05-16 8413/week @ 2024-05-23 7275/week @ 2024-05-30 6802/week @ 2024-06-06 6966/week @ 2024-06-13 7216/week @ 2024-06-20 6298/week @ 2024-06-27

28,842 每月下载量
genawaiter 中使用

MIT/Apache

9KB
164

genawaiter

crate-badge docs-badge ci-badge

此crate在稳定的Rust中实现了无栈生成器(即协程)。您可以使用 async/await 而不是 yield,后者可能永远不会稳定。

功能

  • 支持恢复参数和完成值
  • 无分配
  • 无运行时依赖
    • 没有编译时依赖,使用 default-features = []
  • 基于标准语言构造,这意味着没有特定于平台的花招

示例

let odd_numbers_less_than_ten = gen!({
    let mut n = 1;
    while n < 10 {
        yield_!(n); // Suspend a function at any point with a value.
        n += 2;
    }
});

// Generators can be used as ordinary iterators.
for num in odd_numbers_less_than_ten {
    println!("{}", num);
}

结果

1
3
5
7
9

更多信息请参阅文档。

开发

安装先决条件

安装pre-commit钩子

pre-commit install

这将安装一个Git钩子,在每次提交之前运行快速检查。

运行应用程序

cargo run

运行测试

cargo test

依赖项

~1.5MB
~37K SLoC