use std::error::Error;
use std::fmt;
use crate::ModelError;
#[derive(Debug)]
pub enum ClassifierError {
ModelError(String),
TokenizerError(String),
BuildError(String),
ValidationError(String),
ModelManagementError(ModelError),
}
impl fmt::Display for ClassifierError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ClassifierError::ModelError(msg) => write!(f, "Model error: {}", msg),
ClassifierError::TokenizerError(msg) => write!(f, "Tokenizer error: {}", msg),
ClassifierError::BuildError(msg) => write!(f, "Build error: {}", msg),
ClassifierError::ValidationError(msg) => write!(f, "Validation error: {}", msg),
ClassifierError::ModelManagementError(e) => write!(f, "Model management error: {}", e),
}
}
}
impl Error for ClassifierError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
ClassifierError::ModelManagementError(e) => Some(e),
_ => None,
}
}
}
impl From<ModelError> for ClassifierError {
fn from(error: ModelError) -> Self {
ClassifierError::ModelManagementError(error)
}
}
impl From<ort::Error> for ClassifierError {
fn from(error: ort::Error) -> Self {
ClassifierError::ModelError(error.to_string())
}
}
impl From<tokenizers::Error> for ClassifierError {
fn from(error: tokenizers::Error) -> Self {
ClassifierError::TokenizerError(error.to_string())
}
}