pub trait Validate<T, E> {
// Required methods
fn valid(self) -> Validation<T, E>;
fn validate(self, errors: &mut Vec<E>) -> Validation<T, E>
where E: Clone;
fn recover(self, errors: &mut Vec<E>) -> Validation<T, E>
where T: Default;
}