如何创建指向未确定大小类型的拥有指针?

How can I create an owning pointer to an unsized type?

在 Rust 中处理类型 str 的值很笨拙,因为它们没有实现特征 Sized。因此,它们只能通过指针访问。

对于我的应用程序,使用带有生命周期的普通指针不是很有帮助。相反,我想要一个拥有的胖指针,它保证所包含的对象将持续到指针存在的时间(并且不再),但允许持有未知大小的值。

Box<T> 适用于大小不一的 T;因此 Box<str>Box<[T]> 等等。 Box<str>String 之间需要注意的重要区别是后者也有一个容量成员,将其内存使用量增加一个字,但允许高效附加,因为它可能不需要为每次推送重新分配,而 Box<str> 上的类似方法则需要。 Box<[T]>Vec<T> 也是如此,前者是固定大小的切片,而后者可以方便地增长。与Box<str>不同,Box<[T]>在现实生活中实际使用的; vec! 宏使用它来提高效率,因为 Box<[T]> 可以按字面意思写出,然后免费转换为 Vec<T>