为什么 `dyn Trait` 没有调整大小?

Why is `dyn Trait` not Sized?

在关于不同类型的内存布局的 Rust tutorial 中,它谈到了 trait 对象。然而,正如它所示,存在于堆栈中的 trait 对象部分具有恒定大小:一个 word 用于指向值的指针,另一个 word 用于指向其 vtable 的指针 = 16 个字节64 位机器。

我的问题是,如果特征对象的大小是固定的,为什么我们需要引用它?这个由两个词组成的“胖指针”实际上是引用吗,因为这与引用在所有其他 Rust 中的工作方式不一致,它只是指向某些数据的瘦指针。而且我不相信 Rust 会不必要地隐藏这个细节并且不一致。

正如我在评论中了解到的,Rust 实际上在处理 & 方面是不一致的,这取决于上下文。例如,&dyn Trait&[T] 是胖指针,但一般来说,&T 将是瘦指针。