ما هو csv؟
csv هي مكتبة قياسية في لغة Rust لقراءة وكتابة الملفات بتنسيق CSV (Comma-Separated Values). توفر واجهة عالية الأداء ومرنة للعمل مع البيانات الجدولية، وتدعم السيناريوهات البسيطة والمعقدة (مثل الهروب، والمحددات المختلفة، والرؤوس).
لماذا نحتاجها؟
CSV هو أحد أكثر التنسيقات شيوعًا لتبادل البيانات بين التطبيقات وقواعد البيانات وجداول البيانات. تتيح مكتبة csv ما يلي:
- تحميل ومعالجة مجموعات البيانات الكبيرة بسرعة (السجلات، التصدير من Excel/Google Sheets، تفريغ قواعد البيانات).
- إنشاء تقارير وتصدير بشكل مناسب للقراءة البشرية.
- دمج تطبيقات Rust مع الأنظمة التي تعمل عبر CSV (مثل الأنظمة المالية، خطوط أنابيب التعلم الآلي).
كيف يتم التثبيت؟
أضف التبعية في ملف Cargo.toml لمشروعك:
[dependencies]csv = "1.3"يتم التثبيت تلقائيًا عند البناء عبر cargo build.
الوظائف الأساسية
- القراءة — التكرار عبر الصفوف مع تحليل الأنواع تلقائيًا.
- الكتابة — إنشاء CSV من هياكل البيانات مع التسلسل.
- التخصيص — محدد مخصص (علامة تبويب، فاصلة منقوطة)، الهروب، الضغط.
- العمل مع الرؤوس — الوصول إلى الأعمدة بالاسم.
- التسلسل/إلغاء التسلسل — التكامل مع
serdeللتحويل التلقائي للهياكل.
مثال كود بلغة Rust
use csv::ReaderBuilder;use serde::Deserialize;use std::error::Error;
#[derive(Debug, Deserialize)]struct Record { name: String, age: u8, city: String,}
fn main() -> Result<(), Box<dyn Error>> { let data = "name,age,cityAlice,30,New YorkBob,25,London"; let mut reader = ReaderBuilder::new() .has_headers(true) .from_reader(data.as_bytes());
for result in reader.deserialize::<Record>() { let record: Record = result?; println!("{:?}", record); } Ok(())}متى يتم استخدامها؟
مكتبة csv مثالية لـ:
- معالجة السجلات، التصدير من CRM/ERP.
- إنشاء خطوط أنابيب ETL (استخراج، تحويل، تحميل).
- تحضير البيانات للتعلم الآلي.
- استيراد/تصدير التكوينات في أدوات CLI البسيطة.
إذا كنت بحاجة إلى أداء عالٍ وأمان في الأنواع — فإن csv هي الخيار الأفضل لـ Rust.