ما هي السمة؟
تعريف سلوك مشترك يمكن لأنواع مختلفة تنفيذه (تشبه 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).