مقدمة: لماذا Rust هو خيار عام 2025
في عام 2025، تواصل Rust غزو قلوب المطورين حول العالم بثقة. وفقًا للاستطلاع السنوي لـ Stack Overflow، تم الاعتراف بـ Rust كلغة البرمجة الأكثر تفضيلاً للعام الثامن على التوالي. أبرز مزاياها هي أمان الذاكرة بدون جامع القمامة والأداء العالي للغاية، الذي ينافس C و C++. إذا كنت معتادًا على Python ولكنك ترغب في تعلم كتابة تطبيقات نظام سريعة وموثوقة، أو WebAssembly، أو حتى أنظمة تشغيل - فإن Rust ستكون خطوتك المثالية التالية.
في هذه المقالة، سنشرح من أين تبدأ تعلم Rust في عام 2025: كيفية تثبيت الأدوات، كتابة أول برنامج لك، وفهم المفاهيم الأساسية. هيا بنا!
1. تثبيت Rust والتعرف على Cargo
أول ما عليك فعله هو تثبيت المترجم rustc ومدير الحزم Cargo. في عام 2025، أصبحت العملية مبسطة للغاية.
التثبيت عبر rustup
الطريقة الرسمية والموصى بها هي استخدام أداة rustup. افتح الطرفية ونفذ الأمر:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shسيقدم البرنامج النصي الإعدادات الافتراضية - فقط اضغط على Enter. بعد التثبيت، أعد تشغيل الطرفية أو نفذ:
source $HOME/.cargo/envتحقق من أن كل شيء يعمل:
rustc --versioncargo --versionالبرنامج الأول: "Hello, world!"
لنقم بإنشاء مشروع جديد باستخدام Cargo:
cargo new hello_rustcd hello_rustسينشئ Cargo هيكل الدلائل. افتح الملف src/main.rs - ستجد فيه قالبًا جاهزًا:
fn main() { println!("Hello, world!");}قم ببناء وتشغيل البرنامج بأمر واحد:
cargo runسترى التحية المرجوة. تهانينا، لقد كتبت أول برنامج لك بلغة Rust!
2. أساسيات بناء جملة Rust: المتغيرات والأنواع والدوال
Rust هي لغة ذات كتابة ثابتة صارمة، لكن المترجم غالبًا ما يستنتج الأنواع بنفسه. دعنا نستعرض التركيبات الأساسية.
المتغيرات وعدم القابلية للتغيير
افتراضيًا، جميع المتغيرات في Rust غير قابلة للتغيير (immutable). هذه إحدى الميزات الرئيسية للغة التي تضمن الأمان.
fn main() { let x = 5; // متغير غير قابل للتغيير // x = 6; // خطأ! لا يمكن التغيير let mut y = 10; // متغير قابل للتغيير (mut) y += 5; // الآن y = 15 println!("x = {}, y = {}", x, y);}أنواع البيانات
تدعم Rust الأنواع المألوفة: الأعداد الصحيحة (i32, u64)، الأعداد العائمة (f64)، المنطقية (bool)، الأحرف (char)، والسلاسل النصية (String, &str).
fn main() { let a: i32 = -42; // عدد صحيح بعلامة let b: u8 = 255; // عدد صحيح بدون علامة 8 بت let c: f64 = 3.1415; // double let is_rust_cool = true; // bool let letter = 'R'; // char (4 بايت، Unicode) let greeting = String::from("Привет, Rust!"); println!("{} {} {} {} {} {}", a, b, c, is_rust_cool, letter, greeting);}الدوال
يتم تعريف الدوال باستخدام الكلمة المفتاحية fn. يُشار إلى نوع القيمة المُرجعة بعد السهم ->.
fn add(x: i32, y: i32) -> i32 { x + y // التعبير الأخير هو الإرجاع (بدون فاصلة منقوطة)}
fn main() { let sum = add(10, 20); println!("10 + 20 = {}", sum);}3. المفهوم الأساسي: الملكية والاقتراض
الموضوع الأكثر تعقيدًا، ولكنه أيضًا الأكثر أهمية في Rust هو نظام الملكية (ownership). هو ما يضمن أمان الذاكرة بدون جامع القمامة.