Skip to main content

Crate rusdantic

Crate rusdantic 

Source
Expand description

§Rusdantic

A high-ergonomics data validation and serialization framework for Rust, inspired by Python’s Pydantic.

Rusdantic bridges the gap between serde (serialization) and validation crates like validator / garde into a single, unified derive macro.

§Quick Start

use rusdantic::prelude::*;

#[derive(Rusdantic, Debug)]
struct User {
    #[rusdantic(length(min = 3, max = 20))]
    username: String,

    #[rusdantic(email)]
    email: String,

    #[rusdantic(range(min = 18))]
    age: u8,
}

// Deserialize + validate in one step
let json = r#"{"username": "rust_ace", "email": "user@example.com", "age": 25}"#;
let user: User = rusdantic::from_json(json).unwrap();

// Or validate a manually constructed struct
let user = User {
    username: "ab".to_string(),
    email: "not-email".to_string(),
    age: 16,
};
assert!(user.validate().is_err());

§Features

  • Unified Derive Macro: #[derive(Rusdantic)] generates Serialize, Deserialize, and Validate in one shot.
  • Validate-on-Deserialize: Validation runs during deserialization, so invalid structs never exist in memory when using from_json().
  • Path-Aware Errors: Get precise error paths like user.addresses[0].zip_code for nested structures.
  • 7 Built-in Validators: length, range, email, url, pattern, contains, required — plus custom validators.
  • Serde Compatibility: Works with #[serde(rename)], #[serde(default)], and other serde attributes.
  • JSON Schema Generation: Generate Draft 2020-12 / OpenAPI 3.1 schemas.
  • PII Redaction: #[rusdantic(redact)] hides sensitive data in Debug output.
  • Zero-Cost Abstractions: Validation logic is monomorphized at compile time.

Modules§

prelude
Convenience prelude module for common imports.
types
Constrained types: PositiveInt, NonEmptyString, EmailStr, SecretStr, HttpUrl, etc.

Structs§

DumpOptions
Options for controlling serialization output.
TypeAdapter
A standalone validator/serializer for any serde-compatible type.
ValidationError
A single validation error with location context.
ValidationErrors
A collection of validation errors from validating a struct.

Enums§

PathSegment
Path segment in a validation error location.
RusdanticError
Error type for Rusdantic operations that may fail due to either deserialization errors (malformed JSON) or validation errors (valid JSON but invalid data).

Traits§

Dump
Trait for types that support advanced serialization with options.
Validate
The core validation trait for Rusdantic.

Functions§

from_json
Deserialize a JSON string into a validated struct.
from_json_with_limit
Deserialize a JSON string with an input size limit.
from_value
Deserialize a serde_json::Value into a validated struct.

Derive Macros§

Rusdantic
Derive macro that generates Serialize, Deserialize, and Validate implementations for a struct.