【问题标题】:merging streams in rust / tokio在 rust / tokio 中合并流
【发布时间】:2020-11-03 17:55:55
【问题描述】:

tokio 有一个Merge 数据结构,它允许“合并”两个同质流并忘记出处。

impl<T, U> Stream for Merge<T, U> where
    T: Stream,
    U: Stream<Item = T::Item>, { ...

是否存在流的代数逐点标记联合,它从a 的流和b 的流中产生Either a b 的流?

PS : 我想答案是 no 因为 rust 显然没有标准的 sum 类型..

【问题讨论】:

  • 但是您可以轻松定义自己的 Either,然后将两个流映射到 Streams 到 Either 并合并它们。

标签: rust stream rust-tokio


【解决方案1】:

我不认为它是在 tokio 中直接作为方法提供的,但是您自己非常简单地将其拼凑在一起。 Rust 标准库中没有 Either 类型,但与大多数其他东西一样,有 a crate 类型。

use either::Either; // 0.3.7
use tokio::stream::StreamExt as _;

stream1
    .map(Either::Left)
    .merge(stream2.map(Either::Right))

【讨论】:

  • 这似乎是最简单的方法。 crate 方法将最终用户放在首位(并限制库作者)
猜你喜欢
  • 1970-01-01
  • 2022-06-19
  • 2023-02-22
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
相关资源
最近更新 更多