7 个版本
0.99.1 | 2020年3月9日 |
---|---|
0.99.0 | 2020年2月16日 |
0.2.2 | 2019年11月26日 |
0.1.1 | 2019年11月3日 |
在 异步 类别中排名第 150
每月下载量 68,027
在 85 个 crate(42 个直接使用)中使用
100KB
1.5K SLoC
genawaiter
该 crate 在稳定 Rust 中实现了无栈生成器(也称为协程)。与使用 yield
(该特性在不久的将来不会稳定)不同,您现在使用的是稳定的 async
/await
。
功能
- 支持恢复参数和完成值
- 支持异步生成器(例如,
Stream
) - 无内存分配
- 无运行时依赖
- 无编译时依赖,使用
default-features = false
- 无编译时依赖,使用
- 基于标准语言构造,这意味着没有平台特定的技巧
示例
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
以下是同一个生成器,这次没有使用宏。这就是使用 default-features = false
(这消除了 proc macro 依赖)的方法。
let odd_numbers_less_than_ten = Gen::new(|co| async move {
let mut n = 1;
while n < 10 {
co.yield_(n).await;
n += 2;
}
});
依赖
~235KB