┐─ تحليل الملف ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ┌
│ المطور : Mozilla / مؤسسة Rust
│ الفئة : شفرة
│ نوع MIME : text/x-rust
┘ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── └
ما هو ملف RS؟
ملفات .rs تحتوي على شفرة مصدرية بلغة Rust، لغة برمجة أنظمة طورتها Mozilla Research بقيادة Graydon Hoare وأُطلقت رسمياً عام 2015. اختارت Stack Overflow Rust “اللغة الأكثر محبوبية” لتسع سنوات متتالية (2016-2024) في استطلاعاتها السنوية.
ما يجعل Rust استثنائية هو ضمانها لأمان الذاكرة (Memory Safety) في وقت الترجمة — بدون Garbage Collector ودون الحاجة لإدارة يدوية بـ malloc/free. نظام الملكية (Ownership) ومدقق الاستعارة (Borrow Checker) يمنعان أخطاء Use-After-Free وBuffer Overflow والسباقات التزامنية (Data Races) على مستوى المترجم. النتيجة: أداء مكافئ لـ C/C++ مع ضمانات أمان أقوى بكثير.
كيفية فتح ملفات RS
- VS Code مع إضافة rust-analyzer (ويندوز، ماك، لينكس) — LSP ممتاز ومجاني
- RustRover من JetBrains (ويندوز، ماك، لينكس) — بيئة تطوير Rust متخصصة (مجاني للمعلمين والطلاب)
- Helix (ويندوز، ماك، لينكس) — محرر مكتوب بـ Rust نفسه
- أي محرر نصوص — ملفات Rust نص عادي
المواصفات التقنية
| الخاصية | القيمة |
|---|---|
| نوع MIME | text/x-rust |
| نظام الأنواع | ثابت، قوي، مع استنتاج الأنواع |
| النموذج | متعدد: وظيفي، أمري، كائني (عبر Traits) |
| المترجم | rustc (مبني على LLVM) |
| أمان الذاكرة | نظام الملكية + مدقق الاستعارة |
| مدير الحزم | Cargo (مستودع crates.io) |
| إدارة الذاكرة | تلقائية — بدون GC ودون malloc/free |
| التزامن | ✅ “Fearless Concurrency” (بدون Data Races) |
الاستخدامات الشائعة
- برمجة الأنظمة والأنظمة المدمجة: Firefox يستبدل تدريجياً كود C++ بـ Rust؛ نواة Linux تقبل كود Rust منذ 2022
- WebAssembly: Rust مع WASM يعطي أداء قريباً من الأصلي في المتصفح
- أدوات CLI: ripgrep وfd وbat وexa وhyperfine — أدوات Unix حديثة مكتوبة بـ Rust
- البلوك تشين والعقود الذكية: Solana وPolkadot وNEAR تعتمد Rust لبرامجها
- شبكات وخوادم عالية الأداء: Tokio لبناء خوادم غير متزامنة؛ Actix-web واحد من أسرع أطر الويب
- تطوير نظام التشغيل: Redox OS نظام تشغيل مكتوب بـ Rust بالكامل
مثال برنامج Rust
use std::collections::HashMap;
// نظام الملكية: String تُنقل لا تُنسَخ
fn analyze_text(text: String) -> HashMap<char, usize> {
let mut freq: HashMap<char, usize> = HashMap::new();
for c in text.chars() {
if c.is_alphabetic() {
// entry() API آمنة بدون null checks
*freq.entry(c).or_insert(0) += 1;
}
}
freq
}
// impl Trait بدلاً من وراثة تقليدية
trait Shape {
fn area(&self) -> f64;
}
struct Circle { radius: f64 }
struct Rectangle { width: f64, height: f64 }
impl Shape for Circle {
fn area(&self) -> f64 { std::f64::consts::PI * self.radius.powi(2) }
}
impl Shape for Rectangle {
fn area(&self) -> f64 { self.width * self.height }
}
fn main() {
let text = String::from("مرحبا بالعالم hello world");
let freq = analyze_text(text);
println!("عدد الأحرف الفريدة: {}", freq.len());
// Vec<Box<dyn Shape>> — مصفوفة أشكال بديناميكية
let shapes: Vec<Box<dyn Shape>> = vec![
Box::new(Circle { radius: 5.0 }),
Box::new(Rectangle { width: 4.0, height: 3.0 }),
];
for shape in &shapes {
println!("المساحة: {:.2}", shape.area());
}
}
أوامر Cargo (مدير حزم Rust)
# إنشاء مشروع جديد
cargo new my_project
cargo new --lib my_library # مكتبة
# ترجمة وتشغيل
cargo run
# ترجمة للإنتاج (تحسين كامل)
cargo build --release
# تشغيل الاختبارات
cargo test
# فحص الكود بدون ترجمة (أسرع)
cargo check
# إضافة تبعية
cargo add serde --features derive
Rust مقابل C++ مقابل Go
| الميزة | Rust | C++ | Go |
|---|---|---|---|
| أمان الذاكرة | ✅ مضمون | ❌ | ✅ (GC) |
| الأداء | ✅ أعلى | ✅ أعلى | عالٍ |
| منحنى التعلم | ❌ صعب جداً | صعب | ✅ سهل |
| GC | ❌ (أسرع) | ❌ | ✅ |
| التزامن الآمن | ✅ | ❌ | ✅ Goroutines |