use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum QpStatus {
Optimal,
Infeasible,
Unbounded,
MaxIter,
NumericalError,
}
impl fmt::Display for QpStatus {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
QpStatus::Optimal => write!(f, "optimal"),
QpStatus::Infeasible => write!(f, "infeasible"),
QpStatus::Unbounded => write!(f, "unbounded"),
QpStatus::MaxIter => write!(f, "max-iter"),
QpStatus::NumericalError => write!(f, "numerical-error"),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum QpError {
DimensionMismatch(String),
InvertedBounds(String),
WarmStartDimensionMismatch(String),
LinearSolverFailure(String),
UnsupportedFeature(String),
}
impl fmt::Display for QpError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
QpError::DimensionMismatch(s) => write!(f, "dimension mismatch: {s}"),
QpError::InvertedBounds(s) => write!(f, "inverted bounds: {s}"),
QpError::WarmStartDimensionMismatch(s) => {
write!(f, "warm-start dimension mismatch: {s}")
}
QpError::LinearSolverFailure(s) => write!(f, "linear solver failure: {s}"),
QpError::UnsupportedFeature(s) => write!(f, "unsupported feature: {s}"),
}
}
}
impl std::error::Error for QpError {}