在 rust / tokio 中合并流
merging streams in rust / tokio
tokio
有一个 Merge 数据结构,它允许“合并”两个同类流并忘记出处。
impl<T, U> Stream for Merge<T, U> where
T: Stream,
U: Stream<Item = T::Item>, { ...
是否有流的代数逐点标记并集,它从 a
流和 b
流产生 Either a b
流?
PS :我想答案是 否 因为 rust 显然没有标准的总和类型..
我不认为它在 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))
tokio
有一个 Merge 数据结构,它允许“合并”两个同类流并忘记出处。
impl<T, U> Stream for Merge<T, U> where
T: Stream,
U: Stream<Item = T::Item>, { ...
是否有流的代数逐点标记并集,它从 a
流和 b
流产生 Either a b
流?
PS :我想答案是 否 因为 rust 显然没有标准的总和类型..
我不认为它在 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))