# 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, } 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