amadeus 0.4.3

Harmonious distributed data processing & analysis in Rust. parquet postgres aws s3 cloudfront elb json csv logs hadoop hdfs arrow common crawl
use either::Either;

use amadeus::prelude::*;

#[tokio::test(threaded_scheduler)]
#[cfg_attr(miri, ignore)]
async fn into_par_stream() {
	let pool = &ThreadPool::new(None, None).unwrap();

	<&[usize] as IntoParallelStream>::into_par_stream(&[1, 2, 3])
		.map(|a: usize| a)
		.for_each(&pool, |a: usize| println!("{:?}", a))
		.await;

	let res: usize = [1, 2, 3].into_par_stream().sum(&pool).await;
	assert_eq!(res, 6);

	let slice = [
		0_usize, 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
		79, 83, 89, 97,
	];
	for i in 0..slice.len() {
		let res = slice[..i]
			.par_stream()
			.into_par_stream()
			.fold(
				&pool,
				|| 0_usize,
				|a: usize, b: Either<usize, usize>| a + b.into_inner(),
			)
			.await;
		assert_eq!(res, slice[..i].iter().sum::<usize>());
	}
	let sum: usize = slice.iter().cloned().par().sum(&pool).await;
	assert_eq!(sum, slice.iter().sum::<usize>());
}