use thiserror::Error;
pub type Result<T> = std::result::Result<T, OptimError>;
#[derive(Error, Debug)]
pub enum OptimError {
#[error("Insufficient data: {0}")]
InsufficientData(String),
#[error("Analytics error: {0}")]
AnalyticsError(String),
#[error("Invalid state: {0}")]
InvalidState(String),
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
#[error("Computation error: {0}")]
ComputationError(String),
#[error("Network architecture error: {0}")]
NetworkError(String),
#[error("Training error: {0}")]
TrainingError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Error: {0}")]
Other(String),
}
impl From<serde_json::Error> for OptimError {
fn from(error: serde_json::Error) -> Self {
OptimError::SerializationError(error.to_string())
}
}
impl From<std::io::Error> for OptimError {
fn from(error: std::io::Error) -> Self {
OptimError::Other(error.to_string())
}
}