cmporder 0.1.0

macros for prioritized Ord/PartialOrd
Documentation
#[macro_export]
macro_rules! cmp_order {
  ($f1:expr) => {
    $f1
  };
  ($f1:expr, $fin:expr) => {
    {
      let cmp = $f1;
      match cmp {
        std::cmp::Ordering::Equal => $fin,
        cmp @ _ => cmp
      }
    }
  };
  ($f1:expr, $($f:tt),+) => {
    {
      let cmp = $f1;
      match cmp {
        std::cmp::Ordering::Equal => cmp_order!($($f),+),
        cmp @ _ => cmp
      }
    }
  };
}

#[macro_export]
macro_rules! partial_cmp_order {
  ($fin:expr) => {
    $fin
  };
  ($f1:expr, $fin:expr) => {
    {
      let cmp = $f1;
      match cmp {
        Some(std::cmp::Ordering::Equal) => $fin,
        cmp @ _ => cmp
      }
    }
  };
  ($f1:expr, $($f:tt),+) => {
    {
      let cmp = $f1;
      match cmp {
        Some(std::cmp::Ordering::Equal) => partial_cmp_order!($($f),+),
        _ => cmp
      }
    }
  };
}