15 个版本

0.5.3 2023 年 9 月 9 日
0.5.2 2021 年 2 月 2 日
0.5.1 2020 年 1 月 29 日
0.5.0 2019 年 11 月 27 日
0.4.0 2018 年 6 月 1 日

#441异步

Download history 916/week @ 2024-03-30 401/week @ 2024-04-06 461/week @ 2024-04-13 528/week @ 2024-04-20 532/week @ 2024-04-27 527/week @ 2024-05-04 463/week @ 2024-05-11 414/week @ 2024-05-18 423/week @ 2024-05-25 515/week @ 2024-06-01 357/week @ 2024-06-08 397/week @ 2024-06-15 285/week @ 2024-06-22 244/week @ 2024-06-29 245/week @ 2024-07-06 232/week @ 2024-07-13

1,072 每月下载量
8 开源软件包中使用 (6 个直接使用)

MIT/Apache

58KB
785

streamunordered

Crates.io Documentation Build Status

一个高效多路复用多个流的流。

这个“组合器”提供了维持和驱动一组流完成的能力,同时还可以在它们产生新元素时访问每个流。

流被插入到此集合中,并在它们产生时产生其实现值。此结构针对管理大量流进行了优化。由 StreamUnordered 管理的流只有在生成通知时才会被轮询。这减少了协调大量流所需的工作量。

当首次创建 StreamUnordered 时,它不包含任何流。在此状态下调用 poll 将返回 Ok(Async::Ready(None))。流通过 insert 提交到集合中;然而,此时流不会被轮询。 StreamUnordered 只在调用 poll 时轮询管理的流。因此,在插入新流后调用 poll 非常重要。

如果 StreamUnordered::poll 返回 Ok(Async::Ready(None)),这意味着当前集合没有管理任何流。流可以在以后提交给集合。在那个时刻,对 StreamUnordered::poll 的调用将返回流的解析值 Ok(Async::NotReady),如果流尚未完成。

每次产生值时,都会包含产生该值的流的索引。通过使用 StreamUnordered::getStreamUnordered::get_mut,可以获得产生该值的流的引用。

依赖项

~765KB
~14K SLoC