1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
extern crate regex; mod rule; mod bound; pub mod rules; pub use rule::{Rule, ValidationResult, Error}; pub trait Validate: 'static { fn validate(&self) -> ValidationResult; } impl Validate for () { fn validate(&self) -> ValidationResult { Ok(()) } } impl<T: Validate> Validate for Option<T> { fn validate(&self) -> ValidationResult { match *self { Some(ref data) => data.validate(), None => Ok(()) } } } impl<T: Validate> Validate for Box<T> { fn validate(&self) -> ValidationResult { self.as_ref().validate() } }