使用Vec <T>而不是选项<Vec <T >>有什么含义?

csh*_*rad 4 rust

我正在创建很多结构,Option<Vec<T>>而不是Vec<T>在不需要时不分配内存.我抬头一看这个答案对两者的大小VecOption<Vec>>两者都是相同的.

所以我的问题是这个.我应该使用Vec<T>并检查其.len()效果是否相同或继续使用Option?或者他们是等同的?

最初我也是一名JavaScript开发人员.并且偏执过分配或不分配.

DK.*_*DK. 13

Vec不会分配,因为它没有任何内容可供存储.

由于编译器使用的优化,两者的大小相同,但这与类型的含义无关.即使有这样的优化,一个空的VecNone不一样的东西.一个表示存在空Vec,另一个表示Vec根本没有.根据您的确切做法,区别可能很重要.

  • @csharad:它消耗空间,是的,但它与所有`Vec消耗的空间相同,并且它不在分配之后. (2认同)