Rust是否保证Vec小于单词大小的元素会被紧密包装?

时间:2015-07-06 03:33:08

标签: rust

Vec<u16>内容需要多少空间?比方说,有1000个元素。有没有办法用测试程序验证这个?

这是否保证与&[u16]相同? (我认为没有意义,因为转换很便宜)

Vec[u8]&[u8]

std::mem::size_of返回类型的静态大小,而不是其内容的静态大小)

1 个答案:

答案 0 :(得分:4)

矢量内容的表示与切片的内容相同,与固定大小的数组相同。因此,您可以比较std::mem::size_of::<[u16, 1]>()std::mem::size_of::<[u16, 10]>(),看看它们总是相差10倍。 (Citation: this code。)

Rust使用字节索引,因此u8占用一个字节,u16占用两个字节,u32占用四个字节,u64占用八个字节。 bool也需要一个字节;每个字节有七个浪费的比特(因此类似于当前不稳定的BitVec)。