رست (Rust) يدعم تعدد الأشكال (Polymorphism) باستخدام السمات (Traits). تسمح لنا السمات (Traits) بربط مجموعة من التوابع (methods) بنوع هيكل (struct).
نحدد أولاً تواقيع (signatures) توابع السمة كما يلي:
trait MyTrait {
fn foo(&self);
...
}
عندما ينفذ الهيكل (struct) سمة (trait) ما، فإنه ينشئ عقدًا يسمح لنا بالتفاعل بشكل غير مباشر مع الهيكل من خلال نوع سمة - trait type - (على سبيل المثال &dyn MyTrait
) دون الحاجة إلى معرفة النوع الحقيقي.
يتم تعريف توابع السمة (traits methods) المراد تنفيذها في الهيكل ضمن كتلة التنفيذ (implementation block):
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}