use futures::stream::StreamExt;
use par_stream::ParStreamExt;
async fn main_async() {
let scale = Box::new(2usize);
let addition = Box::new(1usize);
let doubled = 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::<Vec<_>>()
.await;
let expect = (0..1000).map(|value| value * 2 + 1).collect::<Vec<_>>();
assert_eq!(doubled, expect);
}
#[cfg(feature = "runtime_async-std")]
#[async_std::main]
async fn main() {
main_async().await
}
#[cfg(feature = "runtime_tokio")]
#[tokio::main]
async fn main() {
main_async().await
}