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

yield-return

使用 Rust 的 asyncawait 实现类似于 C# 的 yield return 协程。

1 个不稳定版本

0.1.0 2023 年 4 月 21 日

#2163 in Rust 模式

MIT/Apache

9KB
86

yield-return-rs

Actions Status

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

无运行时依赖