Rust สนับสนุน polymorphism ด้วย traits โดย Traits จะช่วยให้เราเชื่อมโยงกลุ่มของเมธอด เข้ากับ struct type ได้
ขั้นแรกเราต้องกำหนดลักษณะเฉพาะของเมธอดใน trait ก่อน:
trait MyTrait {
fn foo(&self);
...
}
เมื่อมี struct ใดต้องการอิมพลีเมนต์ trait มันจะสร้างสัญญาขึ้นมาเพื่ออนุญาต ให้เราใช้วิธีการโต้ตอบกับ struct แบบที่ trait กำหนดไว้ (จากตัวอย่าง &dyn MyTrait
)
โดยไม่ต้องรู้เลยว่า type ที่แท้จริงของมันคืออะไร
วิธีการทำให้ struct ใช้เมธอดของ traits ทำภายในบล็อกแบบนี้:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}