مرحبًا بكم في Comprehensive Rust 🦀

سير العمل للبناء مساهمون GitHub نجوم GitHub

هذه دورة مجانية عن Rust تم تطويرها بواسطة فريق Android في Google. تغطي الدورة النطاق الكامل لـ Rust، من بناء الجملة الأساسي إلى المواضيع المتقدمة مثل generics ومعالجة الأخطاء.

يمكن العثور على أحدث إصدار من الدورة على https://google.github.io/comprehensive-rust/. إذا كنت تقرأ في مكان آخر، يرجى التحقق هناك للحصول على التحديثات.

الدورة متاحة بلغات أخرى. اختر لغتك المفضلة في الزاوية العلوية اليمنى من الصفحة أو تحقق من صفحة Translations للحصول على قائمة بجميع الترجمات المتاحة.

الدورة متاحة أيضًا كملف PDF.

هدف الدورة هو تعليمك Rust. نفترض أنك لا تعرف أي شيء عن Rust ونأمل أن تتعلمها:

  • نقدم لك فهماً شاملاً لبناء (syntax) جملة Rust و لغة البرمجة.
  • تمكينك من تعديل البرامج الحالية وكتابة برامج جديدة بلغة Rust.
  • نوضح لك التعابير الشائعة في Rust.

نسمي الأيام الأربعة الأولى من الدورة أساسيات Rust.

بناءً على ذلك، أنت مدعو للتعمق في موضوع أو أكثر من المواضيع المتخصصة:

  • Android: دورة نصف يومية حول استخدام Rust لتطوير منصة Android (AOSP). يتضمن ذلك التوافق مع C و C++ و Java.
  • Chromium: دورة نصف يومية حول استخدام Rust داخل المتصفحات المبنية على Chromium. يتضمن ذلك التوافق مع C++ وكيفية تضمين الحزم الخارجية (crates) في Chromium.
  • Bare-metal: دورة ليوم كامل حول استخدام Rust لتطوير الأنظمة المضمنة (bare-metal). يتم تغطية كل من المتحكمات الدقيقة ومعالجات التطبيقات.
  • Concurrency: دورة ليوم كامل حول البرمجة المتزامنة في Rust. نغطي كل من البرمجة المتزامنة التقليدية (الجدولة الاستباقية باستخدام الخيوط (threads) والأقفال (mutexes)) والبرمجة المتزامنة باستخدام async/await (تعدد المهام التعاوني باستخدام futures).

الأهداف غير المقصودة (Non-Goals)

Rust هي لغة كبيرة ولن نتمكن من تغطية كل شيء في بضعة أيام. بعض الأهداف غير المقصودة لهذه الدورة هي:

افتراضات

تفترض الدورة أنك تعرف بالفعل كيفية البرمجة. Rust هي لغة ذات نوع ثابت (statically-typed) وسنقوم أحيانًا بإجراء مقارنات مع C و C++ لشرح أو مقارنة منهج Rust بشكل أفضل.

إذا كنت تعرف كيفية البرمجة بلغة ذات نوع ديناميكي مثل Python أو JavaScript، فستتمكن من المتابعة بشكل جيد أيضًا.

هذا مثال على ملاحظة المتحدث. سنستخدم هذه لإضافة معلومات إضافية إلى الشرائح. يمكن أن تكون هذه النقاط الرئيسية التي يجب على المدرب تغطيتها بالإضافة إلى الاجابة على الأسئلة النموذجية التي تطرح في الفصل.