Crate validate_ro

Source
Expand description

§Validation Library

A flexible, extensible validation framework with support for:

  • Synchronous and asynchronous validation
  • Complex nested field validation
  • Custom validation rules
  • MongoDB integration for unique checks
  • Default values and error accumulation

§Core Concepts

  1. Validators: Implement the Validator trait to create validation rules
  2. Rules: Combine multiple validators with optional default values
  3. FormValidator: Validate complete forms/objects with field-level rules

§Example: Basic Usage

use validate_ro::{Rules, FormValidator};
use serde_json::json;
use validate_ro::rules::Rule;

// Create validation rules
let email_rule = Rules::new()
    .add(Rule::required())
    .add(Rule::email(None));

let age_rule = Rules::new()
    .add(Rule::integer())
    .add(Rule::min_value(18.0))
    .default(json!(21)); // Default value if null

// Build form validator
let validator = FormValidator::new()
    .add("email", email_rule)
    .add("age", age_rule);

// Validate data
let data = json!({"email": "test@example.com"});
match validator.validate(&data) {
    Ok(valid_data) => {
        // age will be 21 (default value)
        println!("Valid data: {:?}", valid_data);
    },
    Err(errors) => {
        eprintln!("Validation errors: {:?}", errors);
    }
}

Modules§

error
rules
Built-in Validation Rules
traits

Macros§

rules

Structs§

FormValidator
Validates complete forms/objects with field-level rules
Rules
Container for multiple validators with optional default value