如何创建指向unsized类型的拥有指针?

时间:2015-03-13 02:41:03

标签: pointers rust

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

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

1 个答案:

答案 0 :(得分:2)

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>