mop_structs/
utils.rs

1#[cfg(feature = "rayon")]
2#[derive(Debug)]
3pub struct ParallelIteratorWrapper<I>(pub(crate) I);
4
5#[cfg(feature = "rayon")]
6#[derive(Debug)]
7pub struct ParallelProducerWrapper<I>(pub(crate) I);
8
9pub(crate) fn are_in_upper_bound<T>(slice: &[T], upper_bound: &T) -> bool
10where
11  T: PartialOrd,
12{
13  slice.iter().all(|x| x < upper_bound)
14}
15
16pub(crate) fn does_not_have_duplicates<T>(slice: &[T]) -> bool
17where
18  T: PartialEq,
19{
20  for (a_idx, a) in slice.iter().enumerate() {
21    for b in slice.iter().skip(a_idx + 1) {
22      if a == b {
23        return false;
24      }
25    }
26  }
27  true
28}
29
30#[inline]
31pub fn matrix_x_y(cols: usize, flattened_idx: usize) -> [usize; 2] {
32  [flattened_idx / cols, flattened_idx % cols]
33}