我使用Option<Vec<T>>
而不是Vec<T>
创建了许多结构,以便在不需要时不分配内存。我查询this answer Vec
&amp;的大小{{3}} Option<Vec>>
两者都相同。
所以我的问题是这个。我应该使用Vec<T>
并检查其.len()
是否具有相同的效果,还是继续使用Option
?或者它们是等价的吗?
最初我也是一名JavaScript开发人员。并且偏执过分配或不分配。
答案 0 :(得分:12)
空Vec
没有分配,因为它没有任何内容可以存储。
由于编译器使用的优化,两者的大小相同,但这与类型的含义无关。即使进行了此优化,空Vec
和None
也不是同一回事。一个表示存在空Vec
,另一个表示根本没有Vec
。根据您的具体情况而定,区别可能很重要。