جنریکها توی راست دستبهدست با trait ها کار میکنن. وقتی یه نوع پارامتریشدهی T رو توصیف میکنیم، میتونیم با لیست کردن trait هایی که آرگومان باید پیادهسازی کنه، محدود کنیم که چه نوعهایی میتونن بهعنوان آرگومان استفاده بشن.
توی این مثال، نوع T باید trait به اسم Foo رو پیادهسازی کنه:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
با استفاده از جنریکها، در زمان کامپایل تابعهایی با تایپ استاتیک میسازیم که نوعها و اندازههای مشخصی دارن و همین بهمون اجازه میده دیسپچ استاتیک انجام بدیم و اونا رو بهعنوان یه مقدار با اندازهی مشخص ذخیره کنیم.