use crate::error::ValidationError;
pub trait Validator<T: ?Sized> {
fn validate(&self, value: &T) -> Result<(), ValidationError> {
let mut errors = self.validate_all(value);
if errors.is_empty() {
Ok(())
} else {
Err(errors.remove(0))
}
}
fn validate_all(&self, value: &T) -> Vec<ValidationError>;
}