pub(crate) fn reml_contract_panic(message: impl Into<String>) -> ! {
std::panic::panic_any(message.into())
}
#[derive(Debug, Clone)]
pub enum RemlError {
DimensionMismatch { reason: String },
NonFiniteValue { reason: String },
InvalidKernelMode { reason: String },
ContractViolation { reason: String },
}
impl std::fmt::Display for RemlError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
RemlError::DimensionMismatch { reason }
| RemlError::NonFiniteValue { reason }
| RemlError::InvalidKernelMode { reason }
| RemlError::ContractViolation { reason } => f.write_str(reason),
}
}
}
impl std::error::Error for RemlError {}
impl From<RemlError> for String {
fn from(err: RemlError) -> String {
err.to_string()
}
}