使用Vec <t>而不是选项<vec <t>&gt;有什么影响?

时间:2018-03-19 03:27:13

标签: rust

我使用Option<Vec<T>>而不是Vec<T>创建了许多结构,以便在不需要时不分配内存。我查询this answer Vec&amp;的大小{{3}} Option<Vec>>两者都相同。

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

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

1 个答案:

答案 0 :(得分:12)

Vec没有分配,因为它没有任何内容可以存储。

由于编译器使用的优化,两者的大小相同,但这与类型的含义无关。即使进行了此优化,空VecNone也不是同一回事。一个表示存在空Vec,另一个表示根本没有Vec。根据您的具体情况而定,区别可能很重要。