use crate::error::Result;
#[cfg(feature = "parallel")]
pub fn parallel_map<T, F>(n: usize, f: F) -> Vec<T>
where
T: Send,
F: Fn(usize) -> T + Send + Sync,
{
use rayon::prelude::*;
(0..n).into_par_iter().map(f).collect()
}
#[cfg(not(feature = "parallel"))]
pub fn parallel_map<T, F>(n: usize, f: F) -> Vec<T>
where
F: Fn(usize) -> T,
{
(0..n).map(f).collect()
}
#[cfg(feature = "parallel")]
pub fn parallel_map_result<T, F>(n: usize, f: F) -> Result<Vec<T>>
where
T: Send,
F: Fn(usize) -> Result<T> + Send + Sync,
{
use rayon::prelude::*;
(0..n).into_par_iter().map(f).collect()
}
#[cfg(not(feature = "parallel"))]
pub fn parallel_map_result<T, F>(n: usize, f: F) -> Result<Vec<T>>
where
F: Fn(usize) -> Result<T>,
{
(0..n).map(f).collect()
}