Rust是否对添加到向量中的单个项进行包装?

5
根据Rust文档:
向量始终在堆上分配其数据。
我理解为,这意味着:
Rust将在堆上分配足够的内存以连续方式存储类型T。
Rust不会在将项目放入向量时逐个包装这些项目。
换句话说,如果我向向量添加一些整数,虽然Vec将分配足够的存储空间来存储这些整数,但它不会将这些整数也装箱;引入了另一层间接性。
我不知道如何用代码示例说明或确认这一点,但任何帮助都将不胜感激。

2
不。正确。正确。 - набиячлэвэли
1个回答

7
是的,Vec<T>将所有项存储在一个连续的缓冲区中,而不是单独地封装它们。 文档 明确说明:

Vec<T> 是一种 连续的 可增长数组类型,但发音为 'vector'。

请注意,还可以对向量进行切片,以获取 &[T](切片)。 其文档 再次确认了这一点:

[T] 是一种动态大小的、可视为连续序列的视图。

切片是对表示为指针和长度的 内存块 的视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接