Another project
1use core::time::Duration;
2
3use bone_types::{ParameterIndex, SketchItemId, SolverResidual};
4
5#[derive(Debug, Clone, PartialEq, thiserror::Error)]
6pub enum SolverError {
7 #[error("no solution found (last residual = {last})")]
8 NoSolutionFound { last: SolverResidual },
9 #[error("sketch is over-defined ({} conflicting items)", conflicts.len())]
10 OverDefined { conflicts: Vec<SketchItemId> },
11 #[error("invalid solution found: jacobian singular at parameter {at}")]
12 InvalidSolutionFound { at: ParameterIndex },
13 #[error("solver budget exhausted after {elapsed:?}")]
14 Budget { elapsed: Duration },
15}
16
17pub type Result<T, E = SolverError> = core::result::Result<T, E>;