pub(crate) fn split_results<T, E>(dmap_results: Vec<Result<T, E>>) -> (Vec<T>, Vec<E>, Vec<usize>) {
let mut ok_inners: Vec<T> = vec![];
let mut bad_indices: Vec<usize> = vec![];
let mut error_inners: Vec<E> = vec![];
for (i, rec) in dmap_results.into_iter().enumerate() {
match rec {
Ok(x) => ok_inners.push(x),
Err(e) => {
error_inners.push(e);
bad_indices.push(i);
}
}
}
(ok_inners, error_inners, bad_indices)
}