文档说usize
是
指针大小的无符号整数的操作和常量。
在大多数情况下,我可以用usize
替换u32
,但没有任何反应。所以我不明白为什么我们需要两种类似的类型。
答案 0 :(得分:72)
由于文档状态usize
是指针大小的,因此它的实际大小取决于您编译程序的体系结构。
例如,在32位x86计算机上,usize = u32
,而在x86_64计算机上,usize = u64
。
usize
为您提供了足够大的保证,可以保留数据结构中的任何指针或任何偏移量,而u32
在某些体系结构上可能太小。
答案 1 :(得分:1)
添加到@Levans的答案中,
usize
的大小取决于引用内存中任何位置所需的大小。
在32位目标usize
上为4字节,在64位目标usize
上为8字节