pub use self::{external::*, predict::*};
mod external;
mod predict;
use crate::nn::ModelError;
use strum::{AsRefStr, Display, EnumCount, EnumIs, VariantNames};
#[derive(
AsRefStr,
Clone,
Debug,
Display,
EnumCount,
EnumIs,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
VariantNames,
)]
#[cfg_attr(
feature = "serde",
derive(serde::Deserialize, serde::Serialize),
serde(rename_all = "lowercase", tag = "kind")
)]
#[strum(serialize_all = "lowercase")]
pub enum Error {
IO(String),
External(ExternalError),
Predict(PredictError),
Model(ModelError),
Shape(String),
}
#[cfg(feature = "std")]
error_from!(Error::IO<std::io::Error>);
macro_rules! from_err {
($($variant:ident<$err:ty>),* $(,)*) => {
$(
from_err!(@impl $variant<$err>);
)*
};
(@impl $variant:ident<$err:ty>) => {
impl From<$err> for Error {
fn from(err: $err) -> Self {
Error::$variant(err)
}
}
};
}
from_err!(
External<ExternalError>,
Model<ModelError>,
Predict<PredictError>,
);