use thiserror::Error;
pub type Result<T> = std::result::Result<T, BayesError>;
#[derive(Error, Debug, Clone, PartialEq)]
pub enum BayesError {
#[error("Invalid parameter: {message}")]
InvalidParameter { message: String },
#[error("Numerical error: {message}")]
NumericalError { message: String },
#[error("Convergence failed: {message}")]
ConvergenceError { message: String },
#[error("Dimension mismatch: expected {expected}, got {actual}")]
DimensionMismatch { expected: usize, actual: usize },
#[error("Invalid configuration: {message}")]
InvalidConfiguration { message: String },
#[error("Sampling error: {message}")]
SamplingError { message: String },
}
impl BayesError {
pub fn invalid_parameter(message: impl Into<String>) -> Self {
Self::InvalidParameter {
message: message.into(),
}
}
pub fn numerical_error(message: impl Into<String>) -> Self {
Self::NumericalError {
message: message.into(),
}
}
pub fn convergence_error(message: impl Into<String>) -> Self {
Self::ConvergenceError {
message: message.into(),
}
}
pub fn dimension_mismatch(expected: usize, actual: usize) -> Self {
Self::DimensionMismatch { expected, actual }
}
pub fn invalid_configuration(message: impl Into<String>) -> Self {
Self::InvalidConfiguration {
message: message.into(),
}
}
pub fn sampling_error(message: impl Into<String>) -> Self {
Self::SamplingError {
message: message.into(),
}
}
}