Rust 是不是将添加到向量中的单个项目装箱?

Posted

技术标签:

【中文标题】Rust 是不是将添加到向量中的单个项目装箱?【英文标题】:Does Rust box the individual items that are added to a vector?Rust 是否将添加到向量中的单个项目装箱? 【发布时间】:2017-02-02 09:48:09 【问题描述】:

根据 Rust 文档:

向量总是在堆上分配它们的数据。

据我了解,这意味着:

Rust 将在堆上分配足够的内存来以连续的方式存储类型 T。 Rust 不会在将项目放入向量中时单独装箱。

换句话说,如果我将一些整数添加到向量中,而Vec 将分配足够的存储空间来存储这些整数,它不会也将这些整数装箱;引入另一层间接。

我不确定如何通过代码示例来说明或确认这一点,但我们不胜感激。

【问题讨论】:

没有。正确的。正确。 【参考方案1】:

是的Vec<T> 会将所有项目存储在一个连续的缓冲区中,而不是将它们单独装箱。 The documentation 状态:

一种连续可增长的数组类型,写作Vec<T>,但发音为“向量”。

请注意,也可以对向量进行切片,以获得&[T](切片)。 Its documentation 再次证实了这一点:

连续序列的动态大小视图,[T]

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

【讨论】:

以上是关于Rust 是不是将添加到向量中的单个项目装箱?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串数组中的所有项目添加到 Java 中的向量中?

迭代 Rust 中的结构向量

rust 中的项目结构——添加额外文件

如何将 Visual Studio 中的 C# 项目保存到单个 .cs 文件而不是整个项目文件夹中?

是否可以将不在图表上的项目添加到图例中?

多个控件到单个控件c#winforms上