use std::fmt::Display;
use std::fmt::Formatter;
use std::fmt::Result;
#[must_use]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[non_exhaustive]
pub enum ExecutionErrorKind {
InputTypeMismatch,
InvalidSelection,
DependencyTypeMismatch,
MissingRequiredDependencyValue,
DuplicateDependencyBinding,
UnknownDependencyBinding,
MissingDependencyBinding,
PropertyReadFailed,
TraversalLimit,
AdapterContractViolation,
ExternalFailure,
}
impl Display for ExecutionErrorKind {
fn fmt(&self, formatter: &mut Formatter<'_>) -> Result {
let name = match self {
Self::InputTypeMismatch => "input type mismatch",
Self::InvalidSelection => "invalid validation selection",
Self::DependencyTypeMismatch => "dependency type mismatch",
Self::MissingRequiredDependencyValue => "missing required dependency value",
Self::DuplicateDependencyBinding => "duplicate dependency binding",
Self::UnknownDependencyBinding => "unknown dependency binding",
Self::MissingDependencyBinding => "missing dependency binding",
Self::PropertyReadFailed => "property read failed",
Self::TraversalLimit => "traversal limit exceeded",
Self::AdapterContractViolation => "adapter contract violation",
Self::ExternalFailure => "external failure",
};
formatter.write_str(name)
}
}