use thiserror::Error;
#[must_use]
#[derive(Clone, Copy, Debug, Eq, Error, PartialEq)]
#[non_exhaustive]
pub enum ValidationOutcomeError {
#[error("validation outcomes must be recorded in non-decreasing occurrence order")]
OutOfOrderOccurrence,
#[error("an invalid outcome must contain at least one violation")]
EmptyViolations,
#[error("a failed-prerequisite outcome must contain at least one prerequisite failure ID")]
EmptyPrerequisites,
#[error("a missing-optional outcome cannot contain prerequisite violations")]
UnexpectedPrerequisites,
#[error("a prerequisite failure ID is unknown to this report")]
UnknownPrerequisiteFailure,
#[error("a prerequisite failure ID is repeated")]
DuplicatePrerequisiteFailure,
}