use serde::{Deserialize, Serialize};
use super::AuditSequence;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "defect")]
pub enum AuditChainDefect {
DoesNotStartAtTheBeginning { found: AuditSequence },
DigestAltered { at: AuditSequence },
UnexpectedRoot { at: AuditSequence },
SequenceBroken {
expected: AuditSequence,
found: AuditSequence,
},
LinkBroken { at: AuditSequence },
ForeignCeremony { at: AuditSequence },
}
impl AuditChainDefect {
#[must_use]
pub fn at(self) -> AuditSequence {
match self {
Self::DoesNotStartAtTheBeginning { found } | Self::SequenceBroken { found, .. } => {
found
}
Self::DigestAltered { at }
| Self::UnexpectedRoot { at }
| Self::LinkBroken { at }
| Self::ForeignCeremony { at } => at,
}
}
}