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 asserteq!(i32s.next().await, Some(123)); asserteq!(bools.next().await, None);
asserteq!(i32s.next().await, None);
asserteq!(strings.next().await, None);
```