use super::expression::Expression;
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ConstraintSense {
Le,
Ge,
Eq,
}
#[derive(Debug, Clone)]
pub struct Constraint {
pub(crate) lhs: Expression,
pub(crate) rhs: f64,
pub(crate) sense: ConstraintSense,
}
#[macro_export]
macro_rules! constraint {
(($lhs:expr) <= $rhs:expr) => {
$crate::expression::Expression::from($lhs).leq($rhs)
};
(($lhs:expr) >= $rhs:expr) => {
$crate::expression::Expression::from($lhs).geq($rhs)
};
(($lhs:expr) == $rhs:expr) => {
$crate::expression::Expression::from($lhs).eq_constraint($rhs)
};
($lhs:ident <= $rhs:expr) => {
$crate::expression::Expression::from($lhs).leq($rhs)
};
($lhs:ident >= $rhs:expr) => {
$crate::expression::Expression::from($lhs).geq($rhs)
};
($lhs:ident == $rhs:expr) => {
$crate::expression::Expression::from($lhs).eq_constraint($rhs)
};
}