首页 文章

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

提问于
浏览
2

我对documentation for vectors in Rust中似乎有冲突的陈述感到困惑:

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

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

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

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

1 回答

  • 9

    注意措辞:

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

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

    当向量分配内存时,它说“我想存储12个 FooBar 结构 . 一个 FooBar 是24个字节,因此我需要分配288个字节” .

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

相关问题