use futures::stream::StreamExt as _;
use par_stream::ParStreamExt as _;
fn main() {
par_stream::rt::block_on_executor(async move {
let scale = Box::new(2usize);
let addition = Box::new(1usize);
let doubled: Vec<_> = futures::stream::iter(0..1000)
.par_then(None, move |value| {
let cloned = *scale;
async move { value * cloned }
})
.par_map(None, move |value| {
let cloned = *addition;
move || value + cloned
})
.collect()
.await;
let expect = (0..1000).map(|value| value * 2 + 1).collect::<Vec<_>>();
assert_eq!(doubled, expect);
});
}