1use thiserror::Error;
4
5pub type SolverResult<T> = Result<T, SolverError>;
7
8#[derive(Error, Debug, Clone)]
10pub enum SolverError {
11 #[error("Dimension mismatch: expected {expected}, got {actual}")]
13 DimensionMismatch { expected: String, actual: String },
14
15 #[error("Invalid problem: {message}")]
17 InvalidProblem { message: String },
18
19 #[error("Numerical error: {message}")]
21 NumericalError { message: String },
22
23 #[error("Failed to converge: {message}")]
25 ConvergenceError { message: String },
26
27 #[error("Problem is infeasible: {message}")]
29 InfeasibleProblem { message: String },
30
31 #[error("Problem is unbounded: {message}")]
33 UnboundedProblem { message: String },
34}