demux-stream

Docs.rs Crates.io

Demultiplex streams of sum types into separate streams (e.g. Stream<Coprod!(A, B, ...)> -> Hlist![Stream<A>, Stream<B>, ...]).

```rust use demux_stream::prelude::*;

let coproduct =

let (mut bools, mut i32s, mut string_s): ( UnboundedReceiver, UnboundedReceiver, UnboundedReceiver, ) = stream::once(async { coproduct }).demux3().into();

asserteq!(bools.next().await, None); asserteq!(strings.next().await, None); asserteq!(i32s.next().await, Some(123)); asserteq!(i32s.next().await, None); ```