Skip to main content

ordinal_map/ordinal/impls/
ordering.rs

1use std::cmp::Ordering;
2
3use crate::Ordinal;
4
5impl Ordinal for Ordering {
6    const ORDINAL_SIZE: usize = 3;
7
8    fn ordinal(&self) -> usize {
9        match self {
10            Ordering::Less => 0,
11            Ordering::Equal => 1,
12            Ordering::Greater => 2,
13        }
14    }
15
16    fn from_ordinal(ordinal: usize) -> Option<Self> {
17        match ordinal {
18            0 => Some(Ordering::Less),
19            1 => Some(Ordering::Equal),
20            2 => Some(Ordering::Greater),
21            _ => None,
22        }
23    }
24}
25
26#[cfg(test)]
27mod tests {
28    use std::cmp::Ordering;
29
30    use crate::tests::util::test_ordinal;
31
32    #[test]
33    fn test_ordering() {
34        test_ordinal([Ordering::Less, Ordering::Equal, Ordering::Greater]);
35    }
36}