هياكل مسماة
مثل 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)، التي تُستخدم عندما لا تكون أسماء الحقول مهمة.
- الهياكل ذات الحجم الصفري (Zero-sized structs) (مثل
- إذا كان لديك بالفعل متغيرات بالأسماء الصحيحة، فيمكنك إنشاء الهيكل (struct) باستخدام اختصار.
- الصيغة
..avery
تسمح لنا بنسخ معظم الحقول من الهيكل القديم دون الحاجة إلى كتابتها جميعًا بشكل صريح. يجب أن تكون دائمًا العنصر الأخير.