Ассоциированные типы, GAT, const generics
Ассоциированные типы против параметров типа, обобщённые ассоциированные типы, константные обобщения.
Тема продолжает разговор о трейтах и объясняет элементы, которые трейт связывает с реализующим типом: ассоциированные типы, ассоциированные константы и константные обобщения (const generics). Вопросы проверяют, чем ассоциированный тип отличается от параметра типа трейта: реализация выбирает тип результата сама и может быть только одна на тип, объект трейта требует явно указать Item, а неоднозначность снимается квалифицированным путём. Раздел об обобщённых ассоциированных типах (GAT) разбирает итератор, элементы которого заимствуют сам итератор (lending iterator), обязательную оговорку where Self: 'a и то, почему такой трейт теряет dyn-совместимость. Раздел о константных обобщениях охватывает допустимые типы параметров, порядок аргументов, выражения в фигурных скобках, реализацию для массивов любой длины и то, что разные значения N дают разные типы. Последний раздел посвящён ассоциированным константам: значения по умолчанию, использование в образцах match и длине массива, доступ через ограничение трейтом. Тема опирается на трейты и обобщения.
45 вопросов: базовый уровень — 18, средний — 22, углублённый — 5. 4 справки, 14 источников.
Разделы
- Ассоциированные типы против параметров
- Обобщённые ассоциированные типы (GAT)
- Константные обобщения
- Ассоциированные константы
Предыдущая тема: Трейты, обобщения, dyn / impl · Следующая тема: Коллекции и итераторы