use crate::func::FunctionalId;
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum XcError {
NotImplemented(FunctionalId),
UnknownFunctional,
MissingInput(&'static str),
LengthMismatch {
expected: usize,
found: usize,
},
SpinMismatch,
}
impl std::fmt::Display for XcError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
XcError::NotImplemented(id) => {
write!(f, "functional `{}` is not yet implemented", id.name())
}
XcError::UnknownFunctional => write!(f, "unknown functional"),
XcError::MissingInput(name) => write!(f, "missing required input `{name}`"),
XcError::LengthMismatch { expected, found } => {
write!(
f,
"array length mismatch: expected {expected}, found {found}"
)
}
XcError::SpinMismatch => write!(f, "spin mismatch (or empty mix)"),
}
}
}
impl std::error::Error for XcError {}