Validation des données en Rust : aperçu des bibliothèques et frameworks

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

Validation des données en Rust : aperçu des bibliothèques et frameworks

La validation des données est une étape critique dans le développement de toute application en Rust. La sécurité, la stabilité et la prévisibilité du programme dépendent de l'exactitude de la vérification des données d'entrée. Dans l'écosystème Rust, il existe plusieurs solutions matures pour la validation, chacune ayant ses propres caractéristiques. Dans cet article, nous examinerons en détail trois bibliothèques principales : validator, garde et validify, ainsi que les capacités intégrées de serde.



1. Bibliothèque validator

validator est la bibliothèque la plus populaire pour la validation des structures de données. Elle fournit des attributs pour annoter les champs des structures et générer automatiquement du code de vérification via des macros derive.



Installation

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


Exemple d'utilisation

use validator::Validate;

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

#[validate(email)] email: String,

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

#[validate(required)] phone: Option<String>,}

fn main() { let user = User { username: "Jo".to_string(), email: "invalid-email".to_string(), age: 15, phone: None, };

match user.validate() { Ok(_) => println!("Données valides"), Err(errors) => { for (field, err) in &errors { println!("Erreur dans le champ '{}' : {:?}", field, err); } } }}


Principales fonctionnalités de validator

  • Validateurs intégrés : email, url, phone, credit_card, ip, must_match et autres.
  • Vérification des longueurs de chaînes, des plages numériques, des expressions régulières.
  • Validation des structures imbriquées via #[validate(nested)].
  • Prise en charge de validateurs personnalisés via custom.


2. Bibliothèque garde

garde est un framework de validation moderne et performant, présenté comme une alternative à validator avec des performances améliorées et un système de règles plus flexible.



Installation

[dependencies]garde = "0.21"


Exemple d'utilisation

use garde::Validate;

#[derive(Debug, Validate)]struct RegisterForm { #[garde(length(min = 3, max = 50))] username: String,

#[garde(email)] email: String,

#[garde(range(min = 18))] age: u32,

#[garde(ascii)] password: String,}

fn main() { let form = RegisterForm { username: "a".to_string(), email: "test".to_string(), age: 15, password: "пароль".to_string(), };

if let Err(errors) = form.validate() { for error in errors { println!("Erreur : {}", error.message); } } else { println!("Formulaire valide"); }}


Avantages de garde

  • Haute performance grâce à la minimisation des allocations.
  • Prise en charge des validateurs asynchrones.
  • Ensemble riche de règles intégrées : email, url, ip, phone, credit_card, pattern et autres.
  • Regroupement de règles et validation contextuelle.
  • Possibilité de créer des validateurs personnalisés avec une logique arbitraire.


3. Bibliothèque validify

validify est un framework qui s'intègre avec serde et offre un moyen pratique de valider les données immédiatement après la désérialisation. Cela est particulièrement utile lors du travail avec des frameworks web (actix-web, axum).



Installation

Recommendations