Rust “尺寸”的锈当量是多少?

Rust “尺寸”的锈当量是多少?,rust,Rust,更实用的说法是:向量中的索引、数组长度等应使用哪种整数数据类型? 互联网上对1.0之前版本的锈迹有很多讨论,我找不到关于最终决定的权威答案。这将是usize和isize(指针大小类型,无符号和有符号)。表示数组的最大大小是isize的最大值,因此可以计算位置的差异 不过,std::Vec的函数对所有索引都使用usize。注意,在32位系统上,isize限制为32位,因此这实际上将阵列大小限制为2GB,即使4GB可用。在64位上,我怀疑这会是个问题。@MatthieuM:在现有的64位平台上,地址

更实用的说法是:向量中的索引、数组长度等应使用哪种整数数据类型?


互联网上对1.0之前版本的锈迹有很多讨论,我找不到关于最终决定的权威答案。

这将是
usize
isize
(指针大小类型,无符号和有符号)。表示数组的最大大小是
isize
的最大值,因此可以计算位置的差异


不过,
std::Vec
的函数对所有索引都使用
usize

注意,在32位系统上,
isize
限制为32位,因此这实际上将阵列大小限制为2GB,即使4GB可用。在64位上,我怀疑这会是个问题。@MatthieuM:在现有的64位平台上,地址只有48位,所以63位就足够了。@MatthieuM。为什么是2GB而不是2G元素?@JanusTroelsen它是2G元素,当元素是字节大小时,它可以小到2GB(即使您有足够的地址空间容纳更多)。@JanusTroelsen:我想,Rust具有低级别的功能,即使在将这些指针强制转换为
*const u8
时,也应该始终能够计算指向第一个元素的指针与经过结束元素的指针之间的差值。嗯!!