Объекты черты Rust - это жирные указатели, которые содержат 2 обычных указателя: на данные и на vtable. Vtable - это структура, содержащая указатель функции деструктора, все указатели метода trait и, наконец, размер и выравнивание данных.
Для чего нужны поля размера и выравнивания?
Я не мог найти много:
- Сообщение в блоге A : оно предназначено для освобождения памяти, но не используется сегодня, может использоваться некоторыми будущими, более гибкими механизмами (что это может быть? Есть ли еще?)
- Сообщение в блоге B : оно предназначено для освобождения упакованных значений со стертыми типами, чтобы они знали, как освободить память (
Box
не хранит местоположение, размер и выравнивание ее распределения? Каждый вариант размера каждый DST не может получить свою собственную версию vtable, не так ли?)