Узагальнені типи (generics) у Rust працюють пліч-о-пліч із трейтами. Коли ми описуємо узагальнений тип T
, ми можемо обмежити, які типи можна використовувати як аргумент, перераховуючи які обов'язкові трейти повинні реалізовувати даний узагальнений аргумент.
У цьому прикладі тип T
має реалізовувати трейт Foo
:
fn my_function<T>(foo: T)
where
T:Foo
{
...
}
Використовуючи узагальнений тип (generics), ми створюємо статичні типізовані функції під час компіляції, які матимуть відомі типи та розмір, що дозволяє нам виконувати статичну диспетчеризацію виклику і зберігати (функцію) у вигляді значення відомого розміру.