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::Demux; use frunk::*; use futures::stream; use tokio::{stream::StreamExt, sync::mpsc::UnboundedReceiver};

let coproduct =

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

asserteq!(i32s.next().await, Some(123));

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