BorrowCheck › Ядро языка Rust

Ассоциированные типы, GAT, const generics

Ассоциированные типы против параметров типа, обобщённые ассоциированные типы, константные обобщения.

Тема продолжает разговор о трейтах и объясняет элементы, которые трейт связывает с реализующим типом: ассоциированные типы, ассоциированные константы и константные обобщения (const generics). Вопросы проверяют, чем ассоциированный тип отличается от параметра типа трейта: реализация выбирает тип результата сама и может быть только одна на тип, объект трейта требует явно указать Item, а неоднозначность снимается квалифицированным путём. Раздел об обобщённых ассоциированных типах (GAT) разбирает итератор, элементы которого заимствуют сам итератор (lending iterator), обязательную оговорку where Self: 'a и то, почему такой трейт теряет dyn-совместимость. Раздел о константных обобщениях охватывает допустимые типы параметров, порядок аргументов, выражения в фигурных скобках, реализацию для массивов любой длины и то, что разные значения N дают разные типы. Последний раздел посвящён ассоциированным константам: значения по умолчанию, использование в образцах match и длине массива, доступ через ограничение трейтом. Тема опирается на трейты и обобщения.

45 вопросов: базовый уровень — 18, средний — 22, углублённый — 5. 4 справки, 14 источников.

Разделы

  1. Ассоциированные типы против параметров
  2. Обобщённые ассоциированные типы (GAT)
  3. Константные обобщения
  4. Ассоциированные константы

Предыдущая тема: Трейты, обобщения, dyn / impl · Следующая тема: Коллекции и итераторы