#future #stream #async-stream #async

repeating_future

[RepeatingFuture] 是一种 [Future],可以反复调用对象的异步函数

1 个不稳定版本

0.1.0 2022年2月21日

#1810异步

MIT 许可证

11KB
95 代码行

Crate repeating_future

此 crate 允许您通过在准备就绪时提供 futures 的结果并反复调用它来无限期地产生结果,将任何 [Future] 转换为 futures::Stream

使用默认启用的功能 streams,此 crate 提供了一个方便的 [FutureStream],它可以将任何 [Future] 转换为 futures::Stream 并流式传输该 [Future] 的结果,直到基础 future 失败。查看 stream-example 以了解如何使生活变得更加简单。这是一个少于 50 行的文件,它将 rumqttc 完全转换为 futures::Stream

禁用功能 streams 时,它定义了辅助工具和最终 [RepeatingFuture],它构建一个从对象的函数中获取 [Future] 并转发其结果的 [Future]。当基础函数是 Poll::Ready 时,再次获取函数-future。它可以用于从仅在每个调用中返回一个结果的 async-函数中流式传输项目。

此 crate 最初是为了扩展出色的 rumqttc MQTT 客户端以支持 futures::Stream 而创建的。因此,所有示例目前都是为了这个目的。

用法

将此 crate 添加到您的 Cargo.toml

repeating_future = "0.1.0"

并在您的 main.rs 中使用它

use repeating_future::FutureStream;

简单示例

请参阅 示例 或对于手动 Stream 实现:示例

尝试 cargo run --example manualcargo run --example stream

依赖项

~0.8–16MB
~161K SLoC