validator 0.13.0

Common validation functions (email, url, length, ...) and trait - to be used with `validator_derive`
Documentation

Example:

use serde::Deserialize;

// A trait that the Validate derive will impl
use validator::{Validate, ValidationError};

#[derive(Debug, Validate, Deserialize)]
struct SignupData {
#[validate(email)]
mail: String,
#[validate(phone)]
phone: String,
#[validate(url)]
site: String,
#[validate(length(min = 1), custom = "validate_unique_username")]
#[serde(rename = "firstName")]
first_name: String,
#[validate(range(min = 18, max = 20))]
age: u32,
}

fn validate_unique_username(username: &str) -> Result<(), ValidationError> {
if username == "xXxShad0wxXx" {
// the value of the username will automatically be added later
return Err(ValidationError::new("terrible_username"));
}

Ok(())
}

match signup_data.validate() {
Ok(_) => (),
Err(e) => return e;
};

Available Validations:

Validation Notes
email
url
length
range
must_match
contains
custom This validator can also be used on then entire struct
regex
credit_card (Requires the feature card to be enabled)
phone (Requires the feature phone to be enabled)
non_control_character (Required the feature unic to be enabled)
nested (Uses the validation of the field type it self)
required

Checkout the project README of an in-depth usage description with examples.

Installation:

Add the validator to the dependencies in the Cargo.toml file.

[dependencies]
validator = { version = "0.12", features = ["derive"] }