rust usize和u32有什么区别?

aydmsdu9  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(170)

文档显示usize
指针大小的无符号整数的运算和常量。
在大多数情况下,我可以将usize替换为u32,但什么也没有发生。所以我不明白为什么我们需要两种如此相似的类型。

toiithl6

toiithl61#

警告:这个答案是Rust的遗留问题,usize已经被重新定义为“可以容纳任何内存位置”,请参阅95228以获得非常深入的推理,TL;大卫:指针不仅仅是一个数字。
由于documentation statesusize是指针大小的,因此它的实际大小取决于您正在编译程序的架构。
例如,在32位x86计算机上为usize = u32,而在x86_64计算机上为usize = u64
usize保证始终足够大以容纳数据结构中的任何指针或任何偏移量,而u32在某些体系结构上可能太小。

vx6bjr1n

vx6bjr1n2#

加上@Levans的回答,

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

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

相关问题