Skip to main content

Crate facet_validate

Crate facet_validate 

Source
Expand description

Validation attributes for facet.

This crate provides validation attributes that can be used with the #[facet(...)] syntax. Validators are run during deserialization, providing errors with spans that point to the problematic JSON location.

§Example

use facet::Facet;

#[derive(Facet)]
pub struct Product {
    #[facet(validate::min_length = 1, validate::max_length = 100)]
    pub title: String,

    #[facet(validate::min = 0)]
    pub price: i64,

    #[facet(validate::email)]
    pub contact_email: String,

    #[facet(validate::custom = validate_currency)]
    pub currency: String,
}

fn validate_currency(s: &str) -> Result<(), String> {
    match s {
        "USD" | "EUR" | "GBP" => Ok(()),
        _ => Err(format!("invalid currency code: {}", s)),
    }
}

§Built-in Validators

ValidatorSyntaxApplies To
minvalidate::min = 0numbers
maxvalidate::max = 100numbers
min_lengthvalidate::min_length = 1String, Vec, slices
max_lengthvalidate::max_length = 100String, Vec, slices
emailvalidate::emailString
urlvalidate::urlString
regexvalidate::regex = r"..."String
containsvalidate::contains = "foo"String
customvalidate::custom = fn_nameany

Enums§

Attr
Validation attributes for facet fields.

Functions§

is_valid_email
Validates that a string is a valid email address.
is_valid_url
Validates that a string is a valid URL.
matches_pattern
Validates that a string matches a regex pattern.

Type Aliases§

ValidatorFn
A function that validates a field value. Takes a type-erased pointer and returns Ok(()) if valid, or Err(message) with a description of the validation failure.