مقدمة: لماذا Rust هي لغة المستقبل في عام 2025
لقد تم الاعتراف بـ Rust لعدة سنوات متتالية كأكثر لغة برمجة محبوبة وفقًا لاستطلاعات مطوري Stack Overflow. في عام 2025، تواصل اكتسابها للشعبية، خاصة في البرمجة النظامية، وتطوير الويب، وسلسلة الكتل (blockchain)، والأنظمة المدمجة (embedded systems). ولكن من أين يبدأ المبتدئ؟ في هذه المقالة، سنشرح كيفية تثبيت Rust، وكتابة أول برنامج، وفهم المفاهيم الأساسية للغة.
تجمع Rust بين أداء C/C++ وأمان الذاكرة الذي يتم التحقق منه في مرحلة الترجمة (compilation). هذا يعني أنك ستتجنب العديد من أخطاء وقت التشغيل (runtime errors) الشائعة في اللغات الأخرى. إذا كنت قادمًا من Python، فستواجه منحنى تعلم حادًا، لكن النتيجة تستحق العناء.
1. تثبيت Rust وإعداد البيئة في عام 2025
الخطوة الأولى هي تثبيت مترجم Rust ومدير الحزم Cargo. في عام 2025، أصبحت العملية أسهل.
التثبيت عبر rustup
الطريقة الرسمية والموصى بها هي استخدام rustup. افتح الطرفية (terminal) ونفذ الأمر:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shبعد التثبيت، أعد تشغيل الطرفية أو نفذ:
source $HOME/.cargo/envتحقق من التثبيت:
rustc --versioncargo --versionيجب أن ترى شيئًا مثل:
rustc 1.78.0 (2024-12-15)cargo 1.78.0 (2024-12-15)بيئة التطوير
للعمل المريح، أوصي باستخدام:
- VS Code مع إضافة
rust-analyzer— للإكمال التلقائي، وإبراز الأخطاء، وإعادة الهيكلة (refactoring). - IntelliJ IDEA مع إضافة Rust — لدعم كامل للمشاريع الكبيرة.
- Helix أو Neovim — لعشاق الطرفية.
2. بناء جملة Rust: الخطوات الأولى وأمثلة الكود
Rust هي لغة ذات كتابة ثابتة صارمة (strict static typing)، ولكن مع استنتاج قوي للأنواع (type inference). سنشرح الهياكل الأساسية.
إنشاء مشروع جديد
استخدم Cargo لإنشاء مشروع:
cargo new hello_rustcd hello_rustافتح الملف src/main.rs. سترى:
fn main() { println!("Hello, world!");}شغّل البرنامج:
cargo runالمتغيرات وعدم القابلية للتغيير
افتراضيًا، جميع المتغيرات في Rust غير قابلة للتغيير (immutable). هذا مفهوم أساسي للأمان.
let x = 5; // غير قابل للتغيير// x = 6; // خطأ!
let mut y = 10; // قابل للتغييرy = 15; // صحيحأنواع البيانات
تدعم Rust كلاً من الأنواع العددية (scalar) والمركبة (compound).
// الأنواع العدديةlet integer: i32 = 42;let float: f64 = 3.14;let boolean: bool = true;let character: char = 'R';
// الأنواع المركبةlet tuple: (i32, f64, char) = (500, 6.4, 'R');let array: [i32; 3] = [1, 2, 3];الدوال
تُعلن الدوال باستخدام fn. تُحدد القيمة المُرجعة بعد ->.
fn add(a: i32, b: i32) -> i32 { a + b // التعبير الأخير هو القيمة المُرجعة}
fn main() { let result = add(5, 7); println!("5 + 7 = {}", result);}هياكل التحكم
let number = 6;
if number % 2 == 0 { println!("زوجي");} else { println!("فردي");}
// الحلقاتfor i in 0..5 { println!("i = {}", i);}
let mut counter = 0;while counter < 3 { println!("counter = {}", counter); counter += 1;}3. المفاهيم الأساسية: الملكية (ownership)، الاقتراض (borrowing)، وأوقات الحياة (lifetimes)
أصعب شيء للمبتدئين هو نظام الملكية (ownership). يضمن أمان الذاكرة بدون وجود جامع للقمامة (garbage collector).
الملكية (Ownership)
كل