use std::fmt;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Error {
Detection(String),
InvalidCoreId(usize),
Affinity(String),
Unsupported(String),
PermissionDenied(String),
SystemCall(String),
NotFound(String),
InvalidParameter(String),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::Detection(msg) => write!(f, "CPU detection error: {}", msg),
Error::InvalidCoreId(id) => write!(f, "Invalid core ID: {}", id),
Error::Affinity(msg) => write!(f, "Thread affinity error: {}", msg),
Error::Unsupported(msg) => write!(f, "Unsupported operation: {}", msg),
Error::PermissionDenied(msg) => write!(f, "Permission denied: {}", msg),
Error::SystemCall(msg) => write!(f, "System call error: {}", msg),
Error::NotFound(msg) => write!(f, "Not found: {}", msg),
Error::InvalidParameter(msg) => write!(f, "Invalid parameter: {}", msg),
}
}
}
impl std::error::Error for Error {}