Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpDyInr 34 of 288 menu
◀ ▶

Введение в объекты трейта в Rust

Объект трейта хранит любое значение, которое этот трейт выполняет. Снаружи виден только набор методов из описания трейта, а не имя конкретной структуры. Так одну функцию можно применять к разным типам, если у каждого есть нужные методы.

Раньше параметр ограничивали записью с impl: компилятор подставлял отдельный вариант функции под каждый тип. Объект трейта выбирают, когда важен один общий способ вызова во время работы программы, а не отдельная копия кода на этапе сборки.

Особенно это заметно, когда в одном месте нужно держать значения разных структур с одним трейтом: список участников, очередь обработчиков или набор подписчиков. Тогда тип контейнера описывают через объект трейта, а внутрь кладут то, что набор выполняет.

Дальше разберем параметр-объект у функции, хранение объекта в коробке, вектор значений разных типов с одним трейтом и то, какие сведения о типе при этом теряются.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить