Crate validator

Source
Expand description

§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(url)]
    site: String,
    #[validate(length(min = 1), custom(function = "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:

ValidationNotes
email
url
length
range
must_match
contains
does_not_contain
custom
regex
credit_card(Requires the feature card to be enabled)
non_control_character(Required the feature unic to be enabled)
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.16", features = ["derive"] }

Structs§

ValidationError
ValidationErrors

Enums§

ValidationErrorsKind

Traits§

AsRegex
Validate
This is the original trait that was implemented by deriving Validate. It will still be implemented for struct validations that don’t take custom arguments. The call is being forwarded to the ValidateArgs<'v_a> trait.
ValidateArgs
This trait will be implemented by deriving Validate. This implementation can take one argument and pass this on to custom validators. The default Args type will be () if there is no custom validation with defined arguments.
ValidateContains
ValidateDoesNotContain
ValidateEmail
Validates whether the given string is an email based on the HTML5 spec. RFC 5322 is not practical in most circumstances and allows email addresses that are unfamiliar to most users.
ValidateIp
ValidateLength
Validates the length of the value given. If the validator has equal set, it will ignore any min and max value.
ValidateRange
Validates that the given value is inside the defined range. The max, min, exclusive_max and exclusive_min parameters are optional and will only be validated if they are not None
ValidateRegex
ValidateRequired
Validates whether the given Option is Some
ValidateUrl
Validates whether the string given is a url

Functions§

validate_must_match
Validates that the 2 given fields match. Both fields are optionals