use rustc::hir::{BinOp_, Expr}; #[derive(PartialEq, Eq, Debug, Copy, Clone)] pub enum Rel { Lt, Le, Eq, Ne, } /// Put the expression in the form `lhs < rhs` or `lhs <= rhs`. pub fn normalize_comparison<'a>(op: BinOp_, lhs: &'a Expr, rhs: &'a Expr) -> Option<(Rel, &'a Expr, &'a Expr)> { match op { BinOp_::BiLt => Some((Rel::Lt, lhs, rhs)), BinOp_::BiLe => Some((Rel::Le, lhs, rhs)), BinOp_::BiGt => Some((Rel::Lt, rhs, lhs)), BinOp_::BiGe => Some((Rel::Le, rhs, lhs)), BinOp_::BiEq => Some((Rel::Eq, rhs, lhs)), BinOp_::BiNe => Some((Rel::Ne, rhs, lhs)), _ => None, } }