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

🦀 شرح Rust

السمات (Traits)

الدرس 18 من 25· ⏱ 1 دقائق قراءة

ما هي السمة؟

تعريف سلوك مشترك يمكن لأنواع مختلفة تنفيذه (تشبه interface).

trait Summary {
    fn summarize(&self) -> String;
}

struct Article {
    title: String,
}

impl Summary for Article {
    fn summarize(&self) -> String {
        format!("مقال: {}", self.title)
    }
}

تنفيذ افتراضي

trait Greet {
    fn hello(&self) -> String {
        String::from("مرحبًا")   // افتراضي
    }
}

السمة كقيد على الأنواع العامّة

fn notify<T: Summary>(item: &T) {
    println!("{}", item.summarize());
}

سمات شائعة في المكتبة القياسية

  • Debug (للطباعة {:?}Clone، PartialEq، Display.
#[derive(Debug, Clone)]
struct Point { x: i32, y: i32 }

derive يولّد التنفيذ تلقائيًا.

🎯 التالي: أعمار القيم (Lifetimes).

هل كان هذا الدرس مفيدًا؟