use std::fmt;
use std::path::PathBuf;
pub type Result<T> = std::result::Result<T, QuantizeError>;
#[derive(Debug)]
pub enum QuantizeError {
InvalidTensor {
reason: String,
},
UnsupportedConfig {
reason: String,
},
ModelLoad {
path: PathBuf,
reason: String,
},
ModelSave {
path: PathBuf,
reason: String,
},
GraphTransform {
reason: String,
},
Calibration {
reason: String,
},
Config {
reason: String,
},
}
impl fmt::Display for QuantizeError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
QuantizeError::InvalidTensor { reason } => {
write!(f, "invalid tensor: {reason}")
}
QuantizeError::UnsupportedConfig { reason } => {
write!(f, "unsupported config: {reason}")
}
QuantizeError::ModelLoad { path, reason } => {
write!(f, "failed to load model '{}': {reason}", path.display())
}
QuantizeError::ModelSave { path, reason } => {
write!(f, "failed to save model '{}': {reason}", path.display())
}
QuantizeError::GraphTransform { reason } => {
write!(f, "graph transform error: {reason}")
}
QuantizeError::Calibration { reason } => {
write!(f, "calibration error: {reason}")
}
QuantizeError::Config { reason } => {
write!(f, "config error: {reason}")
}
}
}
}
impl std::error::Error for QuantizeError {}