Введение в обобщения в Rust
Обобщение позволяет записать одну функцию или один тип сразу для нескольких видов данных. Вместо копии под каждое число или строку в сигнатуре оставляют имя типа, а конкретный вид подставляют при использовании. Так меньше повторов и проще править общую логику.
Похожий прием встречается и у структур: поле может хранить значение разного типа, если тип структуры сам параметризован. Методы для такой структуры пишут в блоке, который повторяет то же имя типа, чтобы действия работали с любым подставленным видом.
Обобщение хорошо сочетается с трейтами. Имя типа можно ограничить набором методов, и тогда внутри функции доступны только те действия, которые обещал трейт. Длинное ограничение иногда выносят отдельной записью после списка параметров, чтобы сигнатура читалась короче.
Дальше разберем параметр типа у функции, вывод вида по аргументу, два независимых имени типа, структуру с полем-параметром, блок методов для такой структуры, ограничение трейтом, отдельную запись ограничения и число, известное при сборке.