validatron 0.5.0

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

#[test]
fn basic() {
    struct Foo {}

    impl Validate for Foo {
        fn validate(&self) -> Result<()> {
            Ok(())
        }
    }
    let x = Foo {};
    assert_eq!(Ok(()), x.validate());
}

#[test]
fn large_test() -> Result<()> {
    struct Inner {
        first: u64,
        second: Vec<u64>,
    }

    impl Validate for Inner {
        fn validate(&self) -> Result<()> {
            Error::build()
                .try_at_named("first", is_equal(&self.first, 1))
                .try_at_named("second", is_min_length(&self.second, 1))
                .build()
        }
    }

    struct Outer {
        a: u64,
        b: Inner,
    }

    impl Validate for Outer {
        fn validate(&self) -> Result<()> {
            Error::build()
                .try_at_named("a", is_equal(&self.a, 1))
                .try_at_named("b", self.b.validate())
                .build()
        }
    }

    let a = Outer {
        a: 24,
        b: Inner {
            first: 2,
            second: vec![1, 2, 3],
        },
    };

    let e = a.validate().unwrap_err();
    println!("{:#?}", e);

    Ok(())
}