#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum HowzatError {
DimensionTooLarge,
InvalidArgument { context: &'static str },
CannotHandleLinearity,
ConversionFailure,
LpCycling,
NumericallyInconsistent,
}
impl std::error::Error for HowzatError {}
impl std::fmt::Display for HowzatError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::DimensionTooLarge => write!(f, "dimension too large"),
Self::InvalidArgument { context } => write!(f, "invalid argument: {context}"),
Self::CannotHandleLinearity => write!(f, "cannot handle linearity rows"),
Self::ConversionFailure => write!(f, "numeric conversion failed"),
Self::LpCycling => write!(f, "LP solver cycling detected"),
Self::NumericallyInconsistent => write!(f, "numerical inconsistency detected"),
}
}
}