validator — Validación de datos en Rust

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es validator?

validator es una biblioteca popular para la validación de datos en el lenguaje Rust. Proporciona herramientas flexibles y expresivas para verificar la corrección de datos de entrada: cadenas, números, direcciones de email, URL, direcciones IP, UUID y mucho más. La biblioteca está basada en macros y traits, lo que permite combinar fácilmente reglas de validación y crear verificaciones personalizadas.

¿Para qué sirve la validación de datos?

En cualquier aplicación que trabaje con entrada de usuario, API o archivos de configuración, es críticamente importante verificar los datos antes de usarlos. Los errores de validación pueden provocar caídas del programa, vulnerabilidades o un funcionamiento incorrecto. La biblioteca validator ayuda a:

  • Garantizar la integridad de los datos
  • Reducir la cantidad de código boilerplate
  • Proporcionar un manejo uniforme de errores
  • Simplificar las pruebas

Instalación

Agregue validator al archivo Cargo.toml:

[dependencies]validator = "0.18"serde = { version = "1.0", features = ["derive"] }

También se usa frecuentemente serde para la deserialización de datos antes de la validación.

Funciones principales

  • Atributos de validación — #[validate(...)] para campos de estructuras
  • Validadores integrados: length, range, email, url, ip, uuid, contains, regex, custom
  • Validación anidada — verificación recursiva de estructuras anidadas
  • Validadores personalizados — mediante funciones o closures
  • Agrupación de errores — recopilación de todos los errores de validación en un único objeto ValidationErrors

Ejemplo de código en Rust

use validator::Validate;use serde::Deserialize;

#[derive(Debug, Deserialize, Validate)]struct User { #[validate(length(min = 2, max = 50))] name: String,

#[validate(email)] email: String,

#[validate(range(min = 13, max = 120))] age: u8,

#[validate(url)] website: Option<String>,}

fn main() { let user = User { name: "A".to_string(), email: "invalid-email".to_string(), age: 10, website: Some("not-a-url".to_string()), };

match user.validate() { Ok(_) => println!("Datos correctos"), Err(errors) => { for (field, errs) in errors.field_errors() { for err in errs { println!("Error en el campo {}: {}", field, err); } } } }}

¿Cuándo usar validator?

La biblioteca es ideal para:

  • Servidores web con Actix, Axum, Rocket
  • Procesamiento de formularios y solicitudes JSON
  • Análisis de archivos de configuración
  • Aplicaciones CLI con entrada de usuario
  • Validación de datos antes de escribir en la base de datos

Si necesita verificar datos de forma rápida y confiable en Rust — validator será una excelente elección.

Recommendations