Rust的trait对象是胖指针,包含两个常规指针:数据指针和vtable指针.vtable是一个包含析构函数指针、所有trait方法指针以及数据大小和对齐方式的 struct .
What are the size and alignment fields for?
我找不到太多:
- Blog post A:它是用来释放内存的,但现在还没有使用,将来可能会被一些更灵活的机制使用(它可能是什么?现在还存在吗?)
-
Blog post B:它用于释放类型擦除的盒装值,这样它们就知道如何释放内存(
Box
不存储其分配的位置、大小和对齐方式吗?每个DST的每个大小变量都不能获得自己版本的vtable,是吗?)