use crate::{ContentError, Violation};
use std::fmt;
#[non_exhaustive]
pub struct Rejected<H> {
pub reason: Rejection,
pub handles: Vec<H>,
}
impl<H> fmt::Debug for Rejected<H> {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter
.debug_struct("Rejected")
.field("reason", &self.reason)
.field("handles", &self.handles.len())
.finish()
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Rejection {
Error(ContentError),
Violations(Vec<Violation>),
}
impl fmt::Display for Rejection {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Error(error) => error.fmt(formatter),
Self::Violations(violations) => {
let violations: Vec<String> = violations.iter().map(Violation::to_string).collect();
write!(
formatter,
"content has invalid fields: {}",
violations.join(", ")
)
}
}
}
}