تخطَّ إلى المحتوى

struct

الهياكل struct

struct يجمّع عدّة قيم مرتبطة تحت نوع واحد بحقول مسمّاة، وهو الأساس لبناء بيانات مخصّصة في Rust.

الهيكل (struct) يشبه class بدون توارث: مجموعة حقول مسمّاة بأنواع محدّدة، تُضاف لها الدوال (methods) عبر كتلة impl منفصلة. توجد ثلاثة أشكال: هيكل بحقول مسمّاة (الأشيع)، هيكل صف (tuple struct) بحقول بدون أسماء، وهيكل وحدة (unit struct) بلا حقول إطلاقًا.

إنشاء نسخة من الهيكل ينقل ملكية القيم غير القابلة للنسخ (Copy) إليه، تمامًا كأي قيمة أخرى في نظام الملكية.

الصياغة

struct Name { field: Type, ... }
struct TupleName(Type, Type);
let instance = Name { field: value };

📄 مثال

struct User {
    name: String,
    age: u32,
}

let u = User { name: String::from("سارة"), age: 30 };
println!("{} عمرها {}", u.name, u.age);

// هيكل صف
struct Point(f64, f64);
let p = Point(1.0, 2.0);
println!("{}", p.0);

أهم النقاط

العنصرالوظيفة
struct { field: T }الشكل الأشيع — حقول مسمّاة
struct Name(T, T)هيكل صف (tuple struct) — حقول بلا أسماء، الوصول بـ .0 .1
struct Name;هيكل وحدة (unit struct) بلا بيانات، مفيد كعلامة نوع
..otherبناء نسخة جديدة تنسخ باقي الحقول من نسخة موجودة

💡 نصائح عملية

  • استخدم #[derive(Debug)] فوق الهيكل مباشرة لتتمكّن من طباعته بـ {:?} أثناء التطوير
  • اجمع الدوال المرتبطة بالهيكل داخل impl منفصلة بدل تضخيم تعريف الحقول

⚠️ أخطاء شائعة

  • نسيان أن إنشاء نسخة من هيكل يحوي String أو Vec ينقل الملكية لا ينسخها ما لم يكن Copy
  • محاولة طباعة هيكل بـ {} مباشرة دون تنفيذ Display أو اشتقاق Debug

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار RUST الكامل بالعربي.