تعلّم Rust: تثبيت البيئة وكتابة أول برنامج صناعي
ما هي Rust وأين تقع بين لغات البرمجة؟
Rust هي لغة برمجة أنظمة حديثة طوّرتها Mozilla وأُطلقت رسمياً عام 2015. تقع في نفس فئة C و C++ — لغات تتحكم مباشرة بالذاكرة والعتاد — لكنها تضيف طبقة أمان لا مثيل لها: المُجمِّع يكتشف أخطاء الذاكرة قبل التشغيل.
في عالم الصناعة، هذا يعني: برنامج يتحكم بآلة حقيقية لن ينهار بسبب مؤشر فارغ أو تسريب ذاكرة. لهذا تستخدم شركات مثل Amazon وCloudflare وDropbox لغة Rust في أنظمتها الحرجة — ولهذا اختارها فريق Dr. Machine لبناء منصة ERP صناعية كاملة.
هذا الدرس هو الأول في سلسلة من 15 درساً ستأخذك من الصفر إلى بناء أنظمة صناعية حقيقية بلغة Rust.
تثبيت Rust باستخدام rustup
rustup هو المُثبِّت والمُدير الرسمي لأدوات Rust. يتعامل مع تحديث المُجمِّع وإدارة الإصدارات تلقائياً.
على Linux و macOS
افتح الطرفية ونفّذ:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
اختر الخيار الافتراضي (1) عند السؤال. بعد الانتهاء، أعد تحميل بيئة الطرفية:
source $HOME/.cargo/env
على Windows
حمّل وشغّل rustup-init.exe من الموقع الرسمي rustup.rs. ستحتاج أيضاً إلى Visual Studio Build Tools لأن Rust يستخدم رابط MSVC.
التحقق من التثبيت
rustc --version
# rustc 1.78.0 (9b00956e5 2024-04-29)
cargo --version
# cargo 1.78.0 (54d8815d0 2024-03-26)
إذا ظهرت الإصدارات — التثبيت ناجح.
أدوات Rust: rustc وCargo وrustfmt
عند تثبيت Rust تحصل على ثلاث أدوات أساسية:
| الأداة | الوظيفة | متى تستخدمها |
|---|---|---|
rustc |
المُجمِّع — يحوّل كود Rust إلى ملف تنفيذي | نادراً مباشرة (Cargo يستدعيه) |
cargo |
مدير المشاريع والحزم — بناء، اختبار، تشغيل | دائماً — الأداة الرئيسية |
rustfmt |
تنسيق الكود تلقائياً | بعد كل تعديل لتوحيد الأسلوب |
Cargo هو قلب تجربة التطوير في Rust. يشبه npm في JavaScript أو pip في Python، لكنه يفعل أكثر: يبني المشروع، يدير المكتبات الخارجية، يشغّل الاختبارات، وينشئ التوثيق.
أول برنامج: مرحباً يا مصنع!
لنُنشئ أول مشروع Rust:
cargo new hello-factory
cd hello-factory
Cargo أنشأ مجلداً يحوي:
hello-factory/
├── Cargo.toml # إعدادات المشروع والمكتبات
└── src/
└── main.rs # نقطة البداية — الكود الرئيسي
افتح src/main.rs — ستجد:
fn main() {
println!("Hello, world!");
}
لنعدّله ليطبع رسالة صناعية:
fn main() {
let machine_name = "CNC-Mill-07";
let temperature = 42.5;
println!("مرحباً من آلة {}!", machine_name);
println!("درجة الحرارة الحالية: {:.1}°C", temperature);
}
شغّل البرنامج:
cargo run
ستحصل على:
مرحباً من آلة CNC-Mill-07!
درجة الحرارة الحالية: 42.5°C
cargo run يُجمّع الكود ويشغّله في خطوة واحدة. إذا أردت التجميع فقط بدون تشغيل: cargo build.
بنية المشروع: ماذا أنشأ Cargo؟
Cargo.toml — هوية المشروع
[package]
name = "hello-factory"
version = "0.1.0"
edition = "2021"
[dependencies]
# المكتبات الخارجية تُضاف هنا
- name: اسم المشروع (يصبح اسم الملف التنفيذي)
- version: رقم الإصدار بصيغة SemVer
- edition: إصدار لغة Rust (2021 هو الأحدث المستقر)
- dependencies: هنا تضيف المكتبات — مثلاً
tokioللبرمجة غير المتزامنة
مجلد src/ — الكود المصدري
كل كود Rust يعيش في src/. الملف main.rs هو نقطة البداية لأي برنامج تنفيذي. لاحقاً ستتعلم تقسيم الكود إلى وحدات (modules) متعددة.
مجلد target/ — نتائج التجميع
عند البناء، ينشئ Cargo مجلد target/ يحوي الملفات التنفيذية والمكتبات المُجمَّعة. هذا المجلد لا يُرسل إلى Git (مُستثنى تلقائياً في .gitignore).
اختيار محرر الأكواد: VS Code مع rust-analyzer
أفضل تجربة تطوير لـ Rust حالياً هي VS Code مع إضافة rust-analyzer:
- ثبّت VS Code من code.visualstudio.com
- افتح VS Code وثبّت الإضافة:
rust-analyzer - افتح مجلد المشروع:
File → Open Folder → hello-factory
ما ستحصل عليه:
- إكمال تلقائي ذكي: يقترح الدوال والأنواع أثناء الكتابة
- كشف الأخطاء فوري: خطوط حمراء تحت الكود الخاطئ قبل التجميع
- معلومات الأنواع: ضع المؤشر على متغير لترى نوعه
- تنسيق تلقائي: عند الحفظ، يُنسّق الكود بأسلوب Rust الرسمي
إضافات مفيدة أخرى:
- Even Better TOML: لتحرير
Cargo.tomlبتلوين وإكمال - Error Lens: لعرض رسائل الخطأ مباشرة في سطر الكود
الخلاصة
ثبّتنا Rust باستخدام rustup، تعرّفنا على الأدوات الأساسية (rustc, Cargo, rustfmt)، أنشأنا أول مشروع، وفهمنا بنية الملفات. Cargo هو المحرك الذي يدير كل شيء — من البناء إلى الاختبار. في الدرس القادم سنتعمق في المتغيرات والأنواع — اللبنة الأولى لأي برنامج Rust.