validatron 0.5.0

A data structure validation library designed for user input
Documentation
use validatron::{Error, Result, Validate};

fn main() {
    #[derive(Validate)]
    struct Unit();
    assert!(Unit().validate().is_ok());

    #[derive(Validate)]
    struct NewTypeA(Option<i32>);
    assert!(NewTypeA(None).validate().is_ok());
    assert!(NewTypeA(Some(1)).validate().is_ok());

    struct Dummy(bool);
    impl Validate for Dummy {
        fn validate(&self) -> Result<()> {
            if self.0 {
                Ok(())
            } else {
                Err(Error::new("value is false"))
            }
        }
    }

    #[derive(Validate)]
    struct NewTypeB(#[validatron] Option<Dummy>);

    let mut v = NewTypeB(None);
    assert!(v.validate().is_ok());

    v = NewTypeB(Some(Dummy(true)));
    assert!(v.validate().is_ok());

    v = NewTypeB(Some(Dummy(false)));
    assert!(v.validate().is_err());
}