1 use futures::channel::mpsc;
2 use futures::executor::block_on;
3 use futures::future::join3;
4 use futures::sink::SinkExt;
5 use futures::stream::{self, StreamExt};
6 
7 #[test]
it_works()8 fn it_works() {
9     let (tx1, rx1) = mpsc::channel(1);
10     let (tx2, rx2) = mpsc::channel(2);
11     let tx = tx1.fanout(tx2).sink_map_err(|_| ());
12 
13     let src = stream::iter((0..10).map(Ok));
14     let fwd = src.forward(tx);
15 
16     let collect_fut1 = rx1.collect::<Vec<_>>();
17     let collect_fut2 = rx2.collect::<Vec<_>>();
18     let (_, vec1, vec2) = block_on(join3(fwd, collect_fut1, collect_fut2));
19 
20     let expected = (0..10).collect::<Vec<_>>();
21 
22     assert_eq!(vec1, expected);
23     assert_eq!(vec2, expected);
24 }
25