我对documentation for vectors in Rust中似乎有冲突的陈述感到困惑:
'vector'是一个动态或'可扩展'数组,实现为标准库类型
Vec<T>
。
和
Vectors将其内容存储为堆上
T
的连续数组。这意味着它们必须能够在编译时知道T
的大小(即,需要多少字节来存储T
?)。在编译时无法知道某些东西的大小。对于这些,您必须存储指向该事物的指针:幸运的是,Box
类型可以完美地用于此。
Rust向量是可动态增长的,但我不知道它如何适合在编译时必须知道它们的大小的语句。
已经有一段时间了,因为我使用的是低级语言,我必须考虑内存分配,所以我可能会遗漏一些明显的东西。
答案 0 :(得分:9)
注意措辞:
他们必须能够知道
的大小T
这表示必须知道单个元素的大小。元素总数以及分配的内存总量尚不清楚。
当向量分配内存时,它表示“我想存储12个FooBar
结构。一个FooBar
是24个字节,因此我需要分配288个字节”。
12 是向量的动态容量, 24 是一个元素的静态大小(T
)。