ما هو validator؟
validator هي مكتبة شائعة للتحقق من صحة البيانات بلغة Rust. توفر أدوات مرنة ومعبرة للتحقق من صحة البيانات المدخلة: السلاسل النصية، الأرقام، عناوين البريد الإلكتروني، عناوين URL، عناوين IP، UUID وغيرها الكثير. تعتمد المكتبة على الماكرو (macros) والترايتات (traits)، مما يسمح بدمج قواعد التحقق بسهولة وإنشاء فحوصات مخصصة.
لماذا نحتاج إلى التحقق من صحة البيانات؟
في أي تطبيق يتعامل مع إدخال المستخدم، واجهات API، أو ملفات التهيئة، من المهم جداً التحقق من البيانات قبل استخدامها. قد تؤدي أخطاء التحقق إلى تعطل البرنامج، ثغرات أمنية، أو أداء غير صحيح. تساعد مكتبة validator في:
- ضمان سلامة البيانات
- تقليل كمية الكود المتكرر (boilerplate)
- توفير معالجة موحدة للأخطاء
- تبسيط عملية الاختبار
التثبيت
أضف validator إلى ملف Cargo.toml:
[dependencies]validator = "0.18"serde = { version = "1.0", features = ["derive"] }غالباً ما يُستخدم serde أيضاً لإلغاء تسلسل البيانات (deserialization) قبل التحقق من صحتها.
الوظائف الأساسية
- خصائص التحقق —
#[validate(...)]لحقول الهياكل (structs) - أدوات التحقق المدمجة:
length،range،email،url،ip،uuid،contains،regex،custom - التحقق المتداخل — فحص متكرر للهياكل المتداخلة
- أدوات تحقق مخصصة — عبر الدوال (functions) أو الإغلاقات (closures)
- تجميع الأخطاء — جمع جميع أخطاء التحقق في كائن واحد
ValidationErrors
مثال كود بلغة 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!("البيانات صحيحة"), Err(errors) => { for (field, errs) in errors.field_errors() { for err in errs { println!("خطأ في الحقل {}: {}", field, err); } } } }}متى تستخدم validator؟
المكتبة مثالية للاستخدام في:
- خوادم الويب باستخدام Actix، Axum، Rocket
- معالجة النماذج وطلبات JSON
- تحليل ملفات التهيئة
- تطبيقات سطر الأوامر (CLI) مع إدخال المستخدم
- التحقق من صحة البيانات قبل كتابتها في قاعدة البيانات
إذا كنت بحاجة إلى التحقق من البيانات بسرعة وموثوقية في Rust — فإن validator سيكون خياراً ممتازاً.