use std::fmt;
#[derive(Debug)]
pub enum FittingError {
EmptyData,
LengthMismatch {
expected: usize,
actual: usize,
field: &'static str,
},
InvalidConfig(String),
EvaluationFailed(String),
}
impl fmt::Display for FittingError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::EmptyData => write!(f, "observed data must not be empty"),
Self::LengthMismatch {
expected,
actual,
field,
} => write!(
f,
"{field} length ({actual}) must match expected length ({expected})"
),
Self::InvalidConfig(msg) => write!(f, "invalid model configuration: {msg}"),
Self::EvaluationFailed(msg) => write!(f, "model evaluation failed: {msg}"),
}
}
}
impl std::error::Error for FittingError {}