hypergraph/core/
utils.rs

1use itertools::Itertools;
2
3pub(crate) fn are_slices_equal(a: &[usize], b: &[usize]) -> bool {
4    // Early guard if lengths are different.
5    if a.len() != b.len() {
6        return false;
7    }
8
9    a.iter().zip_eq(b).fold(true, |acc, (a, b)| acc && a == b)
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn check_matching() {
18        assert!(are_slices_equal(&[], &[]));
19        assert!(are_slices_equal(&[1], &[1]));
20        assert!(are_slices_equal(&[1, 2, 3], &[1, 2, 3]));
21    }
22    #[test]
23    fn check_not_matching() {
24        assert!(!are_slices_equal(&[], &[1]));
25        assert!(!are_slices_equal(&[1], &[]));
26        assert!(!are_slices_equal(&[1], &[2]));
27        assert!(!are_slices_equal(&[1, 2, 3], &[1, 2, 4]));
28        assert!(!are_slices_equal(&[1, 2, 3], &[1, 2, 3, 4]));
29    }
30}