Generics ใน Rust ทำงานประสานกับ traits เมื่อเราประกาศพารามิเตอร์ type T
เราสามารถระบุว่า type ไหนที่สามารถใช้เป็นอาร์กิวเมนต์ได้บ้าง ด้วยการลิสต์รายการ ว่าเราอยากได้อาร์กิวเมนต์ที่อิมพลีเมนต์ traits ใดบ้าง
จากตัวอย่างนี้ type T
ต้องอิมพลีเมนต์ ตาม trait Foo
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
ด้วยการใช้ generics ทำให้เราสามารถสร้าง static typed functions ได้ตอน compile time เราจึงสามารถรู้ type และขนาดของมัน และสามารถทำ static dispatch และเก็บ ขนาดของมันได้