use thiserror::Error;
#[derive(Error, Debug)]
pub enum CuttleError {
#[error("Tensor operation error: {0}")]
TensorError(String),
#[error("Model loading error: {0}")]
ModelLoadError(String),
#[error("Model configuration error: {0}")]
ModelConfigError(String),
#[error("Inference error: {0}")]
InferenceError(String),
#[error("Network error: {0}")]
NetworkError(String),
#[error("Tokenizer error: {0}")]
TokenizerError(String),
#[error("File I/O error: {0}")]
IoError(#[from] std::io::Error),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Dimension mismatch: expected {expected}, got {actual}")]
DimensionMismatch { expected: String, actual: String },
#[error("Out of memory: {0}")]
OutOfMemory(String),
#[error("Unsupported operation: {0}")]
UnsupportedOperation(String),
}
pub type Result<T> = std::result::Result<T, CuttleError>;
impl From<serde_json::Error> for CuttleError {
fn from(err: serde_json::Error) -> Self {
CuttleError::SerializationError(format!("JSON error: {}", err))
}
}
impl From<bincode::Error> for CuttleError {
fn from(err: bincode::Error) -> Self {
CuttleError::SerializationError(format!("Bincode error: {}", err))
}
}