التحقق من صحة البيانات في Rust: مكتبة validator

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو التحقق من صحة البيانات في Rust ولماذا هو مطلوب؟

التحقق من صحة البيانات هو عملية التحقق من صحة البيانات المدخلة قبل معالجتها. في Rust، لغة البرمجة النظامية التي تركز على الأمان والأداء، يعتبر التحقق من الصحة مهماً بشكل خاص لأنه يساعد في منع الأخطاء المنطقية، تسرب البيانات، وتعطل البرنامج. توفر مكتبة validator نهجاً تصريحياً للتحقق من حقول الهياكل باستخدام السمات، مما يجعل الكود نظيفاً وقابلاً للصيانة.

كيفية تثبيت مكتبة validator؟

أضف التبعية إلى ملف Cargo.toml:

[dependencies]validator = "0.16"validator_derive = "0.16"

ثم قم بتنفيذ الأمر cargo build لتحميل وتجميع المكتبة.

الوظائف الرئيسية للمكتبة

  • المدققات المضمنة: التحقق من طول السلسلة (min/max)، البريد الإلكتروني، URL، النطاقات الرقمية، التعبيرات المنتظمة، وغيرها الكثير.
  • سمات للهياكل: استخدم #[derive(Validate)] وتعليقات الحقول، على سبيل المثال #[validate(email)].
  • المدققات المخصصة: أنشئ دوال خاصة بك لقواعد محددة.
  • تجميع الأخطاء: يعيد مجموعة من الأخطاء مع تحديد الحقل والرسالة.
  • دعم الهياكل المتداخلة: التحقق التكراري من الكائنات المعقدة.

مثال كود بلغة Rust

use validator::Validate;

#[derive(Debug, Validate)]struct User { #[validate(length(min = 3, max = 20))] username: String, #[validate(email)] email: String, #[validate(range(min = 18, max = 120))] age: u8,}

fn main() { let user = User { username: String::from("al"), email: String::from("invalid-email"), age: 15, };

match user.validate() { Ok(_) => println!("البيانات صحيحة"), Err(errors) => { for (field, err) in &errors { println!("خطأ في الحقل {}: {:?}", field, err); } } }}

في هذا المثال، يتم التحقق من طول الاسم، تنسيق البريد الإلكتروني، والعمر. في حالة عدم التطابق، يتم عرض قائمة الأخطاء.

متى تستخدم validator؟

  • عند تطوير REST API للتحقق من الطلبات الواردة.
  • في ملفات التكوين (YAML, JSON) لضمان صحة الإعدادات.
  • عند العمل مع إدخال المستخدم - التسجيل، النماذج، التعليقات.
  • في محللات البيانات حيث يكون التحكم الصارم في الأنواع والتنسيقات مطلوباً.
  • في الأنظمة ذات المتطلبات العالية للأمان والموثوقية.

مكتبة validator مثالية للمشاريع التي تهم فيها أداء Rust وقابلية قراءة الكود. تتكامل بسهولة مع الكريتات الأخرى، مثل serde لإلغاء التسلسل.

توصيات