مكتبة csv في Rust: دليل شامل مع أمثلة

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

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

ابدأ الدورة

مكتبة csv في Rust: دليل شامل

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

مكتبة csv في Rust هي محلل عالي الأداء وآمن ومرن للتعامل مع ملفات CSV (قيم مفصولة بفواصل). توفر للمطورين أدوات لقراءة وكتابة ومعالجة البيانات الجدولية بتنسيق CSV، وهو أحد أكثر التنسيقات شيوعًا لتبادل البيانات بين الأنظمة المختلفة وقواعد البيانات وجداول البيانات.

الميزة الرئيسية لهذه المكتبة هي نظام الأنواع الصارم (strict typing) في Rust وإدارة الذاكرة بدون جامع القمامة (garbage collector). على عكس نظائرها في Python أو JavaScript، تتيح لك مكتبة csv معالجة ملفات بحجم غيغابايت باستهلاك ضئيل للذاكرة وأداء يمكن التنبؤ به. تدعم المكتبة فواصل مخصصة، وهروب علامات الاقتباس، والعمل مع الرؤوس، والتحويل التلقائي لأنواع البيانات.

هذه المكتبة مثالية لمهام ETL (استخراج، تحويل، تحميل)، وتحليل البيانات، واستيراد/تصدير المعلومات من قواعد البيانات، ومعالجة السجلات (logs)، وأي سيناريو يتطلب عملاً موثوقًا وسريعًا مع البيانات الجدولية. بفضل التكامل مع نظام Rust البيئي، يمكن دمج csv بسهولة مع مكتبات أخرى مثل serde لإلغاء تسلسل البيانات إلى هياكل (structs).

2. التثبيت

لتثبيت مكتبة csv في مشروع Rust، استخدم مدير الحزم cargo. أضف السطر التالي إلى ملف Cargo.toml الخاص بمشروعك:

[dependencies]
csv = "1.3"

بعد ذلك، نفّذ الأمر التالي في الطرفية:

cargo build

للعمل مع تسلسل/إلغاء تسلسل الهياكل، يُوصى أيضًا بتثبيت serde:

[dependencies]
csv = "1.3"
serde = { version = "1.0", features = ["derive"] }

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

مثال بسيط لقراءة ملف CSV وعرض محتوياته في وحدة التحكم:

use std::error::Error;
use csv::Reader;

fn main() -> Result<(), Box<dyn Error>> {
    // إنشاء قارئ CSV من ملف
    let mut reader = Reader::from_path("data.csv")?;

    // المرور على جميع السجلات
    for result in reader.records() {
        let record = result?;
        // عرض كل سجل
        println!("{:?}", record);
    }

    Ok(())
}

مثال لملف data.csv:

name,age,city
Alice,30,New York
Bob,25,London
Charlie,35,Tokyo

هذا الكود سيفتح الملف، ويقرأ جميع الأسطر، ويعرضها كمصفوفات من النصوص. لاحظ معالجة الأخطاء عبر Result — وهي الطريقة القياسية في Rust.

4. أهم الطرق والدوال

4.1. Reader::from_path

التوقيع: pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Reader<File>>

تنشئ قارئ CSV جديد من ملف في المسار المحدد. تكتشف الترميز تلقائيًا وتفتح الملف للقراءة.

use csv::Reader;

let mut reader = Reader::from_path("users.csv").expect("لا يمكن فتح الملف");
for record in reader.records() {
    println!("{:?}", record.unwrap());
}

4.2. Reader::records

التوقيع: pub fn records(&mut self) -> Records<'_, R>

تعيد مكررًا (iterator) لجميع سجلات ملف CSV. كل سجل هو StringRecord يمكن تحويله إلى مصفوفة من النصوص.


                
    
    

توصيات