¿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.