“usize”和“u32”之间的区别是什么?

时间:2015-04-12 17:20:16

标签: rust

文档说usize

  

指针大小的无符号整数的操作和常量。

在大多数情况下,我可以用usize替换u32,但没有任何反应。所以我不明白为什么我们需要两种类似的类型。

2 个答案:

答案 0 :(得分:72)

由于文档状态usize是指针大小的,因此它的实际大小取决于您编译程序的体系结构。

例如,在32位x86计算机上,usize = u32,而在x86_64计算机上,usize = u64

usize为您提供了足够大的保证,可以保留数据结构中的任何指针或任何偏移量,而u32在某些体系结构上可能太小。

答案 1 :(得分:1)

添加到@Levans的答案中,

usize 的大小取决于引用内存中任何位置所需的大小。

在32位目标usize上为4字节,在64位目标usize上为8字节