validator — Validation des données en Rust

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que validator ?

validator est une bibliothèque populaire pour la validation de données en langage Rust. Elle fournit des outils flexibles et expressifs pour vérifier la correction des données d'entrée : chaînes de caractères, nombres, adresses email, URL, adresses IP, UUID et bien plus encore. La bibliothèque est basée sur des macros et des traits, ce qui permet de combiner facilement des règles de validation et de créer ses propres vérifications.

Pourquoi la validation des données est-elle nécessaire ?

Dans toute application qui traite des entrées utilisateur, des API ou des fichiers de configuration, il est essentiel de vérifier les données avant de les utiliser. Les erreurs de validation peuvent entraîner un plantage du programme, des vulnérabilités ou un fonctionnement incorrect. La bibliothèque validator aide à :

  • Garantir l'intégrité des données
  • Réduire la quantité de code boilerplate
  • Assurer un traitement uniforme des erreurs
  • Simplifier les tests

Installation

Ajoutez validator dans le fichier Cargo.toml :

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

serde est également souvent utilisé pour la désérialisation des données avant la validation.

Fonctionnalités principales

  • Attributs de validation — #[validate(...)] pour les champs des structures
  • Validateurs intégrés : length, range, email, url, ip, uuid, contains, regex, custom
  • Validation imbriquée — vérification récursive des structures imbriquées
  • Validateurs personnalisés — via des fonctions ou des closures
  • Regroupement des erreurs — collecte de toutes les erreurs de validation dans un objet unique ValidationErrors

Exemple de code 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!("Données valides"), Err(errors) => { for (field, errs) in errors.field_errors() { for err in errs { println!("Erreur dans le champ {} : {}", field, err); } } } }}

Quand utiliser validator ?

La bibliothèque est idéale pour :

  • Les serveurs web avec Actix, Axum, Rocket
  • Le traitement de formulaires et de requêtes JSON
  • L'analyse de fichiers de configuration
  • Les applications CLI avec saisie utilisateur
  • La validation des données avant écriture en base de données

Si vous avez besoin de vérifier rapidement et fiablement des données en Rust — validator sera un excellent choix.

Recommendations