use futures::stream::StreamExt as _;
use itertools::izip;
use par_stream::ParStreamExt as _;
fn main() {
par_stream::rt::block_on_executor(async move {
let rx1 = futures::stream::iter(1isize..=10).tee(2);
let rx2 = rx1.clone();
let values: Vec<_> = rx1
.map(|val| val * 2)
.zip(rx2.map(|val| val * 3))
.collect()
.await;
assert!(izip!(1..=1000, values)
.all(|(orig, (val1, val2))| orig * 2 == val1 && orig * 3 == val2));
});
}