Struct 如果我创建一个结构并将其放入向量中,它是驻留在堆上还是堆栈上?

Struct 如果我创建一个结构并将其放入向量中,它是驻留在堆上还是堆栈上?,struct,rust,heap-memory,Struct,Rust,Heap Memory,我正在编写一些生成几何元素向量的代码: struct Geom_Entity { // a bunch of geometric information, // like tangent planes, force vectors, etc } 代码正在从文本文件(例如)解析这些实体中的许多,因此我们目前有一个函数: parse_Geom(x: String) -> Vec<Geom_Entity> { // a bunch of code } 然

我正在编写一些生成几何元素向量的代码:

struct Geom_Entity {
    // a bunch of geometric information,
    // like tangent planes, force vectors, etc
}
代码正在从文本文件(例如)解析这些实体中的许多,因此我们目前有一个函数:

parse_Geom(x: String) -> Vec<Geom_Entity> { 
    // a bunch of code
}
然后把盒子放在向量中?

强调(我的):

如果
Vec
已分配内存,则它指向的内存位于堆上

因此,是的,向量的成员属于向量,并存储在堆中


通常,在将元素放入
Vec
之前对其进行装箱是一种浪费——会有额外的内存分配和间接寻址。有时候,你需要额外的分配或间接处理,所以永远不要说永远

另见:


惯用的Rust代码使用
PascalCase
(无下划线)作为类型名(
GeomEntity
),使用
snake\u case
作为变量和函数名(
parse\u geom
)。
Vec
其中
T
是特征类型,可能是装箱元素本身最常见的情况。
Box::new(Geom_Entity { ...