validatron_derive 0.5.0

A data structure validation library designed for user input
Documentation
# Validatron [![Build Status]][actions] [![Docs]][docs.rs] [![Latest Version]][crates.io]


[Build Status]: https://img.shields.io/github/workflow/status/nsat/validatron/Rust/master
[actions]: https://github.com/nsat/validatron/actions?query=branch%3Amaster
[Docs]: https://docs.rs/validatron/badge.svg
[docs.rs]: https://docs.rs/validatron/
[Latest Version]: https://img.shields.io/crates/v/validatron.svg
[crates.io]: https://crates.io/crates/validatron


**Validatron is a data structure validation library for Rust that is designed for performing
extensive integrity checks on user supplied data prior to use.**

It is heavily inspired by the [keats/validator][1] crate but with different design choices:

- do not fail fast, return as many errors as possible
- return a serializable error type
- provide easily extendable validators

## Example

(Check the [examples](/validatron/examples) directory for additional examples.)

```rust
use validatron::Validate;

#[derive(Debug, Validate)]
struct MyStruct {
    #[validatron(min = 42)]
    a: i64,
    #[validatron(max_len = 5)]
    b: Vec<u32>,
}

fn main() {
    let good = MyStruct {
        a: 666,
        b: vec![],
    };

    assert!(good.validate().is_ok());

    let bad = MyStruct {
        a: 1,
        b: vec![42; 25],
    };

    let result = bad.validate();
    assert!(result.is_err());

    println!("{:#?}", result);
}
```

## License

`validatron` is licensed under the MIT license; see the [LICENSE](./LICENSE) file for more details.

[1]: https://github.com/Keats/validator