Hacker News new | ask | show | jobs
Next Validator of Rust–Valitron (github.com)
2 points by tu6ge 1003 days ago
1 comments

Valitron is an ergonomics, functional and configurable validator

## Features

- Ergonomics validation - Build-in rule, e.g. Required, StartWith ... - Closure validate - Related validate, e.g. password confirm - Custom rule with other parameter - Check / modify input data - Custom error message type - Support different error types convert, it can use both build-in rules and custom error type simultaneously - Collect validate error messages - Support all types data on `#[derive(Serialize, Deserialize)]` ( visit [`serde`](https://serde.rs/) for more info)

## Examples

```rust fn main() { let validator = Validator::new() .rule("name", Required.and(StartWith("hello"))) .rule("age", custom(age_limit)) .message([ ("name.required", "name is required"), ("name.start_with", "name should be starts with `hello`"), ]);

    let person = Person {
        name: "li",
        age: 18,
    };

    let res = validator.validate(person);
    // or using trait
    let res = person.validate(validator);
}

fn age_limit(n: &mut u8) -> Result<(), Message> { if n >= 25 && n <= 45 { return Ok(()); } Err("age should be between 25 and 45".into()) } ```