المصفوفات

fn main() {
    let mut a: [i8; 10] = [42; 10];
    a[5] = 0;
    println!("a: {a:?}");
}
This slide should take about 5 minutes.
  • قيمة من نوع المصفوفة [T; N] تحتوي على N (ثابت وقت الترجمة) عناصر من نفس النوع T. لاحظ أن طول المصفوفة هو جزء من نوعها، مما يعني أن [u8; 3] و [u8; 4] يعتبران نوعين مختلفين. سيتم تغطية الشرائح (slices)، التي يتم تحديد حجمها في وقت التشغيل، لاحقًا.

  • حاول الوصول إلى عنصر مصفوفة خارج الحدود. يتم التحقق من الوصول إلى المصفوفة في وقت التشغيل. يمكن لـ Rust عادةً تحسين هذه الفحوصات، ويمكن تجنبها باستخدام Rust غير الآمن (unsafe Rust).

  • يمكننا استخدام القيم الحرفية (literals) لتعيين القيم إلى المصفوفات.

  • الماكرو println! يطلب تنفيذ التصحيح (debug implementation) باستخدام معامل التنسيق ?: {} يعطي المخرجات الافتراضية، {:?} يعطي مخرجات التصحيح (debug output). الأنواع مثل الأعداد الصحيحة (integers) والسلاسل النصية (strings) تنفذ المخرجات الافتراضية، لكن المصفوفات تنفذ فقط مخرجات التصحيح. هذا يعني أنه يجب علينا استخدام مخرجات التصحيح هنا.

  • إضافة #، مثل {a:#?}، يستدعي تنسيق "الطباعة الجميلة" (pretty printing)، والذي يمكن أن يكون أسهل في القراءة.