use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct QduId(pub u64);
impl fmt::Display for QduId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "QDU({})", self.0)
}
}
#[derive(Debug, Clone, PartialEq, Eq)] pub enum OnqError {
Incoherence {
message: String
},
Instability {
message: String
},
BoundaryFailure {
qdu_id: QduId,
message: String
},
ReferenceViolation {
message: String
},
InvalidOperation {
message: String
},
SimulationError {
message: String
},
}
impl fmt::Display for OnqError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
OnqError::Incoherence { message } => write!(f, "Incoherence Violation: {}", message),
OnqError::Instability { message } => write!(f, "Instability Violation: {}", message),
OnqError::BoundaryFailure { qdu_id, message } => write!(f, "Boundary Failure ({}): {}", qdu_id, message),
OnqError::ReferenceViolation { message } => write!(f, "Reference Violation: {}", message),
OnqError::InvalidOperation { message } => write!(f, "Invalid Operation: {}", message),
OnqError::SimulationError { message } => write!(f, "Simulation Process Error: {}", message),
}
}
}
impl std::error::Error for OnqError {}