هياكل مسماة

مثل C و C++، يدعم Rust الهياكل المخصصة (custom structs):

struct Person {
    name: String,
    age: u8,
}

fn describe(person: &Person) {
    println!("{} is {} years old", person.name, person.age);
}

fn main() {
    let mut peter = Person { name: String::from("بيتر"), age: 27 };
    describe(&peter);

    peter.age = 28;
    describe(&peter);

    let name = String::from("أفيري");
    let age = 39;
    let avery = Person { name, age };
    describe(&avery);

    let jackie = Person { name: String::from("جاكي"), ..avery };
    describe(&jackie);
}
This slide should take about 10 minutes.

نقاط رئيسية (Key Points):

  • الهياكل (Structs) تعمل مثلما في C أو C++.
    • مثل C++، وعلى عكس C، لا حاجة إلى typedef لتعريف نوع.
    • على عكس C++، لا يوجد وراثة (inheritance) بين الهياكل (structs).
  • قد يكون هذا وقتًا جيدًا لإعلام الناس بوجود أنواع مختلفة من الهياكل (structs).
    • الهياكل ذات الحجم الصفري (Zero-sized structs) (مثل struct Foo;) قد تُستخدم عند تطبيق سمة (trait) على نوع معين ولكن لا تحتوي على أي بيانات تريد تخزينها في القيمة نفسها.
    • الشريحة التالية ستقدم هياكل الترتيب (Tuple structs)، التي تُستخدم عندما لا تكون أسماء الحقول مهمة.
  • إذا كان لديك بالفعل متغيرات بالأسماء الصحيحة، فيمكنك إنشاء الهيكل (struct) باستخدام اختصار.
  • الصيغة ..avery تسمح لنا بنسخ معظم الحقول من الهيكل القديم دون الحاجة إلى كتابتها جميعًا بشكل صريح. يجب أن تكون دائمًا العنصر الأخير.