use core::fmt;
use std::error::Error;
pub type NNResult<T> = Result<T, MininnError>;
#[derive(Debug)]
pub enum MininnError {
LayerError(String),
CostError(String),
ActivationError(String),
LayerRegisterError(String),
ActivationRegisterError(String),
TrainConfigError(String),
NNError(String),
IoError(String),
SerializeMsgPackError(rmp_serde::encode::Error),
DeserializeMsgPackError(rmp_serde::decode::Error),
SerdeError(serde::de::value::Error),
ShapeError(ndarray::ShapeError),
HDF5Error(hdf5::Error),
HDF5StringError(hdf5::types::StringError),
}
impl Error for MininnError {}
impl fmt::Display for MininnError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
MininnError::LayerError(msg) => write!(f, "Layer Error: {msg}."),
MininnError::ActivationError(msg) => write!(f, "Activation Error: {msg}."),
MininnError::CostError(msg) => write!(f, "Cost Error: {msg}."),
MininnError::LayerRegisterError(msg) => write!(f, "Layer Registration Error: {msg}."),
MininnError::ActivationRegisterError(msg) => {
write!(f, "Activation Registration Error: {msg}.")
}
MininnError::TrainConfigError(msg) => write!(f, "Train Config Error: {msg}."),
MininnError::NNError(msg) => write!(f, "Neural Network Error: {msg}."),
MininnError::IoError(msg) => write!(f, "I/O Error: {}.", msg),
MininnError::SerializeMsgPackError(err) => {
write!(f, "MessagePack Serialization Error: {}.", err)
}
MininnError::DeserializeMsgPackError(err) => {
write!(f, "MessagePack Deserialization Error: {}.", err)
}
MininnError::SerdeError(err) => {
write!(f, "Serialization/Deserialization Error: {}.", err)
}
MininnError::ShapeError(err) => write!(f, "Shape Error: {}.", err),
MininnError::HDF5Error(err) => write!(f, "HDF5 Error: {}.", err),
MininnError::HDF5StringError(err) => write!(f, "HDF5 String Error: {}.", err),
}
}
}
impl From<rmp_serde::encode::Error> for MininnError {
fn from(err: rmp_serde::encode::Error) -> MininnError {
MininnError::SerializeMsgPackError(err)
}
}
impl From<rmp_serde::decode::Error> for MininnError {
fn from(err: rmp_serde::decode::Error) -> MininnError {
MininnError::DeserializeMsgPackError(err)
}
}
impl From<ndarray::ShapeError> for MininnError {
fn from(err: ndarray::ShapeError) -> MininnError {
MininnError::ShapeError(err)
}
}
impl From<hdf5::Error> for MininnError {
fn from(err: hdf5::Error) -> MininnError {
MininnError::HDF5Error(err)
}
}
impl From<hdf5::types::StringError> for MininnError {
fn from(err: hdf5::types::StringError) -> MininnError {
MininnError::HDF5StringError(err)
}
}
impl From<serde::de::value::Error> for MininnError {
fn from(err: serde::de::value::Error) -> MininnError {
MininnError::SerdeError(err)
}
}