مكتبة fake لـ Rust: دليل شامل مع أمثلة عملية

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

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

ابدأ الدورة

مكتبة fake في Rust: توليد بيانات اختبارية واقعية

في تطوير البرمجيات الحديث، يلعب الاختبار والنمذجة الأولية دوراً محورياً. لكن إنشاء بيانات اختبارية عالية الجودة يدوياً هو عملية شاقة وعرضة للأخطاء. تقدم مكتبة fake للغة Rust حلاً أنيقاً لهذه المشكلة، حيث تتيح توليد بيانات واقعية ومحلية ومتنوعة لأي غرض — من اختبارات الوحدة إلى ملء قواعد البيانات في النسخ التجريبية للتطبيقات.

fake هي أداة قوية ومرنة لتوليد البيانات الوهمية، مستوحاة من مكتبة Faker الشهيرة في Python. تدعم المكتبة مجموعة واسعة من أنواع البيانات: الأسماء، العناوين، أرقام الهواتف، النصوص، التواريخ، الأرقام، الألوان، بيانات الإنترنت (البريد الإلكتروني، الروابط، عناوين IP) وغيرها الكثير. الميزة الأساسية للمكتبة هي دعم التوطين: يمكنك توليد بيانات تتوافق مع الخصائص الثقافية والإقليمية لمختلف البلدان (أسماء عربية، عناوين أمريكية، أرقام هواتف يابانية، إلخ).

لماذا تستخدم fake؟ أولاً، توفر الوقت: بدلاً من كتابة عشرات الأسطر من الكود لإنشاء هياكل اختبارية، تستدعي دالة واحدة. ثانياً، ترفع جودة الاختبارات: يتم توليد البيانات عشوائياً، مما يساعد في اكتشاف الحالات الحدية والأخطاء التي قد تبقى غير مكتشفة عند استخدام مجموعات اختبارية ثابتة. ثالثاً، هي أداة لا غنى عنها للعروض التوضيحية والنمذجة الأولية: يمكنك ملء واجهة المستخدم بمحتوى واقعي بسرعة، دون الكشف عن بيانات العملاء الحقيقية.

التثبيت

لإضافة مكتبة fake إلى مشروع Rust الخاص بك، نفّذ الأمر التالي في الطرفية داخل المجلد الرئيسي للمشروع:

cargo add fake

سيضيف هذا الأمر أحدث إصدار من المكتبة إلى قسم [dependencies] في ملف Cargo.toml. إذا كنت تفضل التحرير اليدوي، أضف السطر التالي:

[dependencies]
fake = "2.9"  # أو أحدث إصدار عند القراءة

تأكد أيضاً من تثبيت مترجم Rust (rustc) ومدير الحزم Cargo. إذا لم يكن مثبتاً، قم بتثبيتهما من الموقع الرسمي.

البداية السريعة

لنبدأ بمثال عملي بسيط يولد اسماً عشوائياً لشخص ويطبعه في وحدة التحكم:

use fake::Fake;
use fake::faker::name::raw::*;
use fake::locales::EN;

fn main() {
    // توليد اسم عشوائي بالإنجليزية
    let name: String = Name(EN).fake();
    println!("الاسم المُولّد: {}", name);
}

يوضح هذا الكود النمط الأساسي للعمل مع المكتبة: تختار اللغة (في هذه الحالة EN — الإنجليزية)، نوع البيانات (مثل Name)، ثم تستدعي الدالة .fake() التي تُرجع القيمة المُولّدة. الأمر بسيط وأنيق.

الدوال والطرق الأساسية

توفر مكتبة fake عشرات المولدات لأنواع مختلفة من البيانات. فيما يلي 8 من أكثرها استخداماً مع شرح مفصل وأمثلة.

1. Name — توليد اسم شخص

التوقيع: Name(locale: L) -> impl Faker

الوصف: يُولّد الاسم الكامل لشخص (الاسم الأول واسم العائلة) وفقاً للغة المختارة.

use fake::Fake;
use fake::faker::name::raw::*;
use fake::locales::RU;

fn main() {
    let russian_name: String = Name(RU).fake();
    println!("الاسم الروسي: {}", russian_name);
    
    let english_name: String = Name(EN).fake();
    println!("الاسم الإنجليزي: {}", english_name);
}

2. FirstName و LastName — الاسم الأول واسم العائلة بشكل منفصل

التوقيع: FirstName(locale: L) -> impl Faker و LastName(locale: L) -> impl Faker

الوصف: يُولّد الاسم الأول فقط أو اسم العائلة فقط، مما يتيح تحكماً أكبر في بناء البيانات.

use fake::Fake;
use fake::faker::name::raw::*;
use fake::locales::AR_SA;

fn main() {
    let first_name: String = FirstName(AR_SA).fake();
    let last_name: String = LastName(AR_SA).fake();
    println!("الاسم الأول: {}، اسم العائلة: {}", first_name, last_name);
}

توصيات