rudoku_core/
util.rs

1/// Returns `true` if the reference_arr has only distinct items.
2/// The array is sorted afterwards
3pub fn has_only_unique_elements<T>(reference_slice: &mut [&T], ignore: &T) -> bool  where T: Ord{
4    // sort and return false if neighbors are the same
5    reference_slice.sort();
6    let length = reference_slice.len();
7    for i in 0..(length - 1) {
8        if reference_slice[i] != ignore && reference_slice.get(i) == reference_slice.get(i + 1) {
9            return false;
10        }
11    }
12    true
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18    #[test]
19    fn has_only_unique_elements_1() {
20        let mut ints = [&1,&2,&3,&4,&5];
21        assert!(has_only_unique_elements(&mut ints, &-1));
22    }
23
24    #[test]
25    fn has_only_unique_elements_2() {
26        let mut ints = [&1,&4,&3,&4,&5];
27        assert!(!has_only_unique_elements(&mut ints, &-1));
28    }
29
30    #[test]
31    fn has_only_unique_elements_3() {
32        let mut ints = [&1,&4,&3,&4,&5];
33        assert!(has_only_unique_elements(&mut ints, &4));
34    }
35}