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