An open API service indexing awesome lists of open source software.

https://github.com/nsat/validatron

Rust data structure validation library designed for large user inputs
https://github.com/nsat/validatron

proc-macro rust serde validation

Last synced: 4 months ago
JSON representation

Rust data structure validation library designed for large user inputs

Awesome Lists containing this project

README

          

# 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