1 个不稳定版本
| 0.1.0 | 2023 年 4 月 21 日 |
|---|
#2163 in Rust 模式
9KB
86 行
yield-return-rs
使用 Rust 的 async 和 await 实现类似于 C# 的 yield return 协程。
示例
use yield_return::Yield;
let iter = Yield::new(|mut y| async move {
y.ret(1).await;
y.ret(2).await;
});
let list: Vec<_> = iter.collect();
assert_eq!(list, vec![1, 2]);
与 genawaiter 进行比较
genawaiter 已经作为一个具有相同目的的crate存在,与 yield-return-rs 相同。
与 genawaiter 相比,yield-return-rs 非常简单。
无依赖,无宏,无不安全代码。
代码短,只有一个文件,lib.rs。您可以复制并粘贴 lib.rs 的内容,并直接使用。
| yield-return-rs | genawaiter | |
|---|---|---|
基于 Rc 的实现 |
✔ | ✔ |
| 基于栈的实现 | ✔ | |
支持 Sync 实现 |
✔ | |
支持 Iterator |
✔ | ✔ |
支持 Generator |
✔ | |
| 无依赖 | ✔ | |
| 无宏 | ✔ | |
| 仅安全代码 | ✔ | |
仅 lib.rs |
✔ | |
| 公共类型数量 | 2 | 许多 |
许可证
本项目采用 Apache-2.0/MIT 双重许可。请参阅两个 LICENSE-* 文件以获取详细信息。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的任何有意提交以包含在本作品中的贡献,将如上所述双重许可,不附加任何附加条款或条件。