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 许可证定义的任何有意提交以包含在本作品中的贡献,将如上所述双重许可,不附加任何附加条款或条件。