use std::fmt;
#[derive(Debug, Clone)]
pub enum HybridError {
GpuNotAvailable,
GpuExecutionFailed(String),
WorkloadTooLarge {
requested: usize,
maximum: usize,
},
ConfigError(String),
ResourceAllocationFailed(String),
}
impl fmt::Display for HybridError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
HybridError::GpuNotAvailable => write!(f, "GPU is not available"),
HybridError::GpuExecutionFailed(msg) => write!(f, "GPU execution failed: {}", msg),
HybridError::WorkloadTooLarge { requested, maximum } => {
write!(f, "Workload size {} exceeds maximum {}", requested, maximum)
}
HybridError::ConfigError(msg) => write!(f, "Configuration error: {}", msg),
HybridError::ResourceAllocationFailed(msg) => {
write!(f, "Resource allocation failed: {}", msg)
}
}
}
}
impl std::error::Error for HybridError {}
pub type HybridResult<T> = Result<T, HybridError>;