#stream #async-stream #future #async

jstream-ext

一个为 futures Stream 特性添加额外扩展的 crate

1 个不稳定版本

0.1.0 2021年2月5日

#1708 in 异步

Apache-2.0

34KB
729

jstream-ext

此 crate 为 futures stream 特性提供了一些额外的扩展。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
jstream-ext = "0.1"

lib.rs:

简介

扩展了 StreamTryStream 特性,这些特性在我与它们一起工作时至少实现了几次。

要使用这些扩展,只需 use 此 crate 导出的 JStreamExtJTryStreamExt 项。

摘要

以下是此 crate 提供的各种扩展列表

Stream 扩展

Stream 的扩展由 JStreamExt 特性提供。

  • dedup - 从流中删除重复项
  • fold_mut - 与 fold 类似,但要求一个 (&mut T, Self::Item) -> Future<Output=()> 而不是 (T, Self::Item) -> Future<Output=T> 的折叠函数。
  • first - 将流转换为只发出源发出的第一个项目的 future。
  • nth - 将流转换为 future,在跳过指定数量的前导项后发出一个项目。

TryStream 扩展

TryStream 的扩展由 JTryStreamExt 特性提供。

  • try_first - 将流转换为只发射源发出的第一个结果的future。
  • try_nth - 将流转换为future,在跳过指定数量的前导项目后发射一个项目,或者在遇到错误时立即发射错误。
  • try_filter_map_ok - 与filter_map类似,但它允许您在Ok部分对TryStream进行过滤映射,并在遇到错误时立即发射错误。
  • try_dedup - 从流中删除重复的项目,但在看到错误时也立即发射错误。
  • fuse_on_fail - 如果看到错误,当在发射了Err(Self::Error)项目后调用try_poll_next时,会“熔断”流。这也使得TryStream实现FusedStream,无论源是否实现了该特性。
  • try_fold_mut - 与try_fold类似,但要求一个(&mut T, Self::Ok) -> Future<Output=Result<(), Self::Error>>而不是一个(T, Self::Ok) -> Future<Output=Result<T, Self::Error>>折叠函数。

依赖项

~1MB
~15K SLoC