如何在Rust中编译时动态和已知向量?

KPD*_*KPD 4 rust

我对Rust中的向量文档中似乎存在冲突的语句感到困惑:

"向量"是动态或"可增长"数组,实现为标准库类型Vec<T>.

Vectors将其内容存储为T堆上的连续数组.这意味着它们必须能够知道T编译时的大小(即,需要多少字节来存储T?).在编译时无法知道某些东西的大小.对于这些,你必须存储一个指向那个东西的指针:谢天谢地,这个Box类型完美地适用于此.

Rust向量是动态可扩展的,但是我不知道它如何适合在编译时必须知道它们的大小的语句.

已经有一段时间了,因为我使用的是低级语言,我必须考虑内存分配,所以我可能会遗漏一些明显的东西.

She*_*ter 11

注意措辞:

他们必须能够知道它的大小 T

这表示必须知道单个元素的大小.元素的总数以及分配的内存总量是未知的.

当向量分配内存时,它表示"我想存储12个FooBar结构.一个FooBar是24个字节,因此我需要总共分配288个字节".

12是向量的动态容量,24是一个元件(的静态大小T).