1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#[derive(Debug, PartialEq, Eq)]
pub enum Comparison {
Equal,
Sublist,
Superlist,
Unequal,
}
pub fn sublist<T: PartialEq>(fst: &[T], snd: &[T]) -> Comparison {
match (fst.len(),snd.len()) {
(0,0) => Comparison::Equal,
(0,_) => Comparison::Sublist,
(_,0) => Comparison::Superlist,
(n,m) if n < m && snd.windows(n).any(|s| fst == s) => Comparison::Sublist,
(n,m) if n > m && fst.windows(m).any(|f| snd == f) => Comparison::Superlist,
_ if fst == snd => Comparison::Equal,
_ => Comparison::Unequal
}
}
|