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 在 异步 中
1,072 每月下载量
在 8 个 开源软件包中使用 (6 个直接使用)
58KB
785 行
streamunordered
一个高效多路复用多个流的流。
这个“组合器”提供了维持和驱动一组流完成的能力,同时还可以在它们产生新元素时访问每个流。
流被插入到此集合中,并在它们产生时产生其实现值。此结构针对管理大量流进行了优化。由 StreamUnordered
管理的流只有在生成通知时才会被轮询。这减少了协调大量流所需的工作量。
当首次创建 StreamUnordered
时,它不包含任何流。在此状态下调用 poll
将返回 Ok(Async::Ready(None))
。流通过 insert
提交到集合中;然而,此时流不会被轮询。 StreamUnordered
只在调用 poll
时轮询管理的流。因此,在插入新流后调用 poll
非常重要。
如果 StreamUnordered::poll
返回 Ok(Async::Ready(None))
,这意味着当前集合没有管理任何流。流可以在以后提交给集合。在那个时刻,对 StreamUnordered::poll
的调用将返回流的解析值 或 Ok(Async::NotReady)
,如果流尚未完成。
每次产生值时,都会包含产生该值的流的索引。通过使用 StreamUnordered::get
或 StreamUnordered::get_mut
,可以获得产生该值的流的引用。
依赖项
~765KB
~14K SLoC