1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use std::cmp::Ordering;

/// Extensions to orderings.
pub(crate) trait OrderingExt {
  /// Lexicographically chains comparisions.
  fn lexico<F: Fn() -> Ordering>(self, f: F) -> Self;
}

impl OrderingExt for Ordering {
  fn lexico<F: Fn() -> Ordering>(self, f: F) -> Ordering {
    match self {
      Ordering::Less | Ordering::Greater => self,
      Ordering::Equal => f(),
    }
  }
}