use std::fmt;
#[derive(Debug)]
pub enum TaskError {
NotFound(u32),
IoError(std::io::Error),
SerdeError(serde_json::Error),
InvalidInput(String),
}
impl fmt::Display for TaskError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
TaskError::NotFound(id) => write!(f, "Task with ID {} not found", id),
TaskError::IoError(e) => write!(f, "I/O error - {}", e),
TaskError::SerdeError(e) => write!(f, "Serialization error - {}", e),
TaskError::InvalidInput(msg) => write!(f, "Invalid input - {}", msg),
}
}
}
impl std::error::Error for TaskError {}
impl From<std::io::Error> for TaskError {
fn from(error: std::io::Error) -> Self {
TaskError::IoError(error)
}
}
impl From<serde_json::Error> for TaskError {
fn from(error: serde_json::Error) -> Self {
TaskError::SerdeError(error)
}
}