النظام البيئي لـ Rust: أفضل 10 مكتبات للمشاريع الحقيقية

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

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

ابدأ الدورة

لماذا Rust ليست مجرد لغة عصرية، بل أداة عمل حقيقية؟

\n\n

لعدة سنوات متتالية، تم الاعتراف بـ Rust كأكثر لغة برمجة محبوبة وفقًا لاستطلاع Stack Overflow. ولكن خلف حب المجتمع، يوجد نظام بيئي قوي — مكتبات Rust التي تحول لغة النظام الآمنة إلى أداة متعددة الاستخدامات. إذا كنت تكتب بلغة Python وتتطلع إلى Rust للخدمات الدقيقة عالية التحميل، أدوات CLI، أو معالجة البيانات — فهذه المقالة لك.

\n\n

لن نقوم بإدراج جميع الـ 100,000+ كريت (كما تسمى الحزم في Rust). بدلاً من ذلك، سأعرض 10 من أكثر مكتبات Rust فائدة التي تسرّع عملية التطوير حقًا. سترى أمثلة على الكود، وستعرف المهام التي يحلها كل مكتبة، وستفهم من أين تبدأ الغوص في عالم النظام البيئي لـ Rust.

\n\n

1. Serde — ملك التسلسل

\n\n

إذا كنت تعمل مع JSON، YAML، TOML أو أي تنسيق بيانات آخر — فأنت بحاجة إلى serde. هذه ليست مجرد مكتبة، بل إطار عمل كامل لتسلسل وإلغاء تسلسل هياكل البيانات. Serde هو أساس آلاف الكريتات الأخرى ويعتبر المعيار الفعلي.

\n\n

مثال: تحويل هيكل Rust إلى JSON والعكس.

\n\n
use serde::{Serialize, Deserialize};\n\n#[derive(Serialize, Deserialize, Debug)]\nstruct User {\n    name: String,\n    age: u8,\n    email: String,\n}\n\nfn main() {\n    let user = User {\n        name: "أليكسي".into(),\n        age: 30,\n        email: "alex@example.com".into(),\n    };\n\n    // التسلسل إلى JSON\n    let json = serde_json::to_string(&user).unwrap();\n    println!("JSON: {}", json);\n\n    // إلغاء التسلسل مرة أخرى\n    let decoded: User = serde_json::from_str(&json).unwrap();\n    println!("تم فك الترميز: {:?}", decoded);\n}
\n\n

لاحظ: Serde يعمل مع أي تنسيق — فقط قم بتوصيل كريت المحول (serde_json, serde_yaml، إلخ). هذه واحدة من أشهر مكتبات Rust بملايين التنزيلات.

\n\n

2. Tokio — وقت التشغيل غير المتزامن

\n\n

لكتابة تطبيقات شبكية عالية الأداء في Rust، يتم استخدام البرمجة غير المتزامنة. Tokio هو وقت التشغيل غير المتزامن الرئيسي، الذي يوفر منفذًا متعدد الخيوط، مؤقتات، إدخال/إخراج شبكي، وقنوات. بدون Tokio، لا يمكن تصور النظام البيئي الحديث لـ Rust.

\n\n

خادم TCP echo بسيط على Tokio:

\n\n
use tokio::net::TcpListener;\nuse tokio::io::{AsyncReadExt, AsyncWriteExt};\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n    let listener = TcpListener::bind("127.0.0.1:8080").await?;\n    println!("الخادم يعمل على المنفذ 8080");\n\n    loop {\n        let (mut socket, _) = listener.accept().await?;\n        tokio::spawn(async move {\n            let mut buf = [0; 1024];\n            loop {\n                let n = socket.read(&mut buf).await.unwrap();\n                if n == 0 { break; }\n                socket.write_all(&buf[0..n]).await.unwrap();\n            }\n        });\n    }\n}
\n\n

Tokio يُستخدم في أطر الويب (Actix, Warp)، قواعد البيانات (TiKV)، وحتى أدوات Kubernetes. إذا كنت تبحث عن مكتبات Rust لتطوير الويب — فـ Tokio سيكون أساسك.

\n\n

3. Reqwest — عميل HTTP للبشر

\n\n

reqwest هو عميل HTTP أنيق، مبني على Tokio. يدعم الطلبات غير المتزامنة والحظرية، JSON، multipart، والبروكسي. مثالي لكتابة برامج الزحف، التكامل مع واجهات برمجة التطبيقات، والاختبارات.

\n\n

طلب GET غير متزامن مع استجابة JSON:

\n\n
use reqwest::Client;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n    let client = Client::new();\n    let resp = client\n        .get("https://api.github.com/repos/rust-lang/rust")\n        .header("User-Agent", "my-rust-app")\n                

المدونات

توصيات الكتب