【发布时间】:2018-08-24 20:22:54
【问题描述】:
Rust 的 trait 对象是包含 2 个常规指针的胖指针:指向数据和指向 vtable。 vtable 是一个结构,包含一个析构函数指针、所有 trait 方法指针,最后是数据的大小和对齐方式。
大小和对齐字段的用途是什么?
我找不到太多:
- Blog post A:它用于释放内存,但今天没有使用,可能会被一些未来更灵活的机制使用(它可能是什么?是否存在?)
-
Blog post B:它用于释放类型擦除的装箱值,因此它们知道如何释放内存(
Box不存储其分配的位置、大小和对齐方式?每个 DST 的每个大小变体都无法获得自己的版本一个 vtable,可以吗?)
【问题讨论】: