use std::fmt;
#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
#[derive(Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum CrackleError {
TaskPanicked(String),
KilnCooled,
InvalidProfile(String),
DetectionFailed(String),
}
impl fmt::Display for CrackleError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
CrackleError::TaskPanicked(msg) => write!(f, "task panicked: {msg}"),
CrackleError::KilnCooled => write!(f, "kiln has already cooled and cannot accept new tasks"),
CrackleError::InvalidProfile(msg) => write!(f, "invalid thermal profile: {msg}"),
CrackleError::DetectionFailed(msg) => write!(f, "pattern detection failed: {msg}"),
}
}
}
impl std::error::Error for CrackleError {}
pub type Result<T> = std::result::Result<T, CrackleError>;