دليل uuid في Rust: أمثلة واستخدام شامل

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

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

ابدأ الدورة

مكتبة uuid لـ Rust: دليل كامل لتوليد UUID والتعامل معه

1. ما هي مكتبة uuid ولماذا تحتاجها؟

مكتبة uuid في Rust هي واحدة من أشهر وأكثر الحزم استقرارًا لتوليد وتحليل والتعامل مع المعرفات الفريدة العالمية (UUID) وفقًا لمعيار RFC 4122. المعرف الفريد العالمي (UUID) هو رقم 128 بت مضمون التفرد في المكان والزمان، مما يجعله مثاليًا للاستخدام كمفاتيح أساسية في قواعد البيانات، ومعرفات الجلسات، ومتتبعات الأحداث، وأي سيناريو آخر يتطلب تفردًا دون إدارة مركزية.

لماذا تحتاج هذه المكتبة؟ في التطوير الحديث بلغة Rust، غالبًا ما تحتاج إلى توليد معرفات فريدة لا تعتمد على ترتيب إنشاء الكائنات، ولا تكشف عن عدد السجلات (على عكس المعرفات التلقائية التزايدية)، ويمكن نقلها بأمان بين الأنظمة المختلفة. توفر حزمة uuid مجموعة كاملة من الأدوات للتعامل مع UUID من الإصدارات 1 و3 و4 و5 و7 (الإصدار الأخير هو إصدار زمني أضيف في التحديثات الأخيرة). تدعم الحزمة التسلسل عبر serde، والتعامل مع تنسيقات عرض مختلفة (التنسيق القياسي، بدون شرطات، URN)، والتكامل مع قواعد البيانات الشهيرة عبر الميزات المناسبة.

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

2. التثبيت

لإضافة مكتبة uuid إلى مشروع Rust الخاص بك، قم بتنفيذ أحد الأوامر التالية في الدليل الجذري للمشروع:

cargo add uuid

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

[dependencies]
uuid = { version = "1.10", features = ["v4", "v7", "serde"] }

لاحظ قسم features. افتراضيًا، تتضمن المكتبة الإمكانيات الأساسية فقط. للعمل مع إصدارات معينة من UUID، يجب تحديد الميزات المناسبة صراحةً:

  • v1 — UUID الإصدار 1 (بناءً على الوقت وعنوان MAC)
  • v3 — UUID الإصدار 3 (بناءً على تجزئة MD5 للاسم ومساحة الاسم)
  • v4 — UUID الإصدار 4 (عشوائي)
  • v5 — UUID الإصدار 5 (بناءً على تجزئة SHA-1 للاسم ومساحة الاسم)
  • v7 — UUID الإصدار 7 (زمني بدقة ميلي ثانية، RFC 9562)
  • serde — دعم التسلسل/إلغاء التسلسل عبر حزمة serde
  • fast-rng — استخدام مولد أرقام عشوائي سريع (موصى به للإصدار v4)

إذا كنت بحاجة إلى جميع الإمكانيات، يمكنك تحديد:

[dependencies]
uuid = { version = "1.10", features = ["v1", "v3", "v4", "v5", "v7", "serde"] }

3. البداية السريعة — مثال عملي بسيط

أنشئ مشروعًا جديدًا باستخدام الأمر cargo new uuid_example، وأضف التبعية في Cargo.toml كما هو موضح أعلاه، ثم استبدل محتوى ملف src/main.rs بالكود التالي:

use uuid::Uuid;

fn main() {
    // توليد UUID عشوائي من الإصدار 4
    let my_uuid = Uuid::new_v4();
    println!("UUID v4 المُولَّد: {}", my_uuid);
    
    // تحليل UUID من نص
    let parsed = Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000")
        .expect("فشل تحليل UUID");
    println!("UUID المُحلَّل: {}", parsed);
    
    // مقارنة UUID
    if my_uuid == parsed {
        println!("المعرفان متطابقان");
    } else {
        println!("المعرفان مختلفان");
    }
}

توصيات