#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("invalid input: {reason}")]
InvalidInput { reason: String },
#[error("insufficient data: need {need}, got {got}")]
InsufficientData { need: usize, got: usize },
#[error("singular matrix or degenerate configuration")]
Singular,
#[error("numerical failure: {0}")]
Numerical(String),
}
impl Error {
pub(crate) fn invalid_input(reason: impl Into<String>) -> Self {
Self::InvalidInput {
reason: reason.into(),
}
}
}