use std::path::{Path, PathBuf};
use rayon::prelude::*;
pub(crate) const LOAD_FILES_PAR_THRESHOLD: usize = 20;
pub(crate) const LOAD_FILES_PAR_MIN_LEN: usize = 4;
pub(crate) fn map_paths_with_threshold<T, E, F>(paths: &[PathBuf], f: F) -> Vec<Result<T, E>>
where
F: Fn(&Path) -> Result<T, E> + Sync,
T: Send,
E: Send,
{
if paths.len() < LOAD_FILES_PAR_THRESHOLD {
paths.iter().map(|path| f(path)).collect()
} else {
paths
.par_iter()
.with_min_len(LOAD_FILES_PAR_MIN_LEN)
.map(|path| f(path))
.collect()
}
}