文档显示usize是指针大小的无符号整数的运算和常量。在大多数情况下,我可以将usize替换为u32,但什么也没有发生。所以我不明白为什么我们需要两种如此相似的类型。
usize
u32
toiithl61#
警告:这个答案是Rust的遗留问题,usize已经被重新定义为“可以容纳任何内存位置”,请参阅95228以获得非常深入的推理,TL;大卫:指针不仅仅是一个数字。由于documentation statesusize是指针大小的,因此它的实际大小取决于您正在编译程序的架构。例如,在32位x86计算机上为usize = u32,而在x86_64计算机上为usize = u64。usize保证始终足够大以容纳数据结构中的任何指针或任何偏移量,而u32在某些体系结构上可能太小。
usize = u32
usize = u64
vx6bjr1n2#
加上@Levans的回答,
**usize**的大小取决于引用内存中任何位置所需的大小。
在32位目标上,usize为4字节,在64位目标上,usize为8字节
2条答案
按热度按时间toiithl61#
警告:这个答案是Rust的遗留问题,
usize
已经被重新定义为“可以容纳任何内存位置”,请参阅95228以获得非常深入的推理,TL;大卫:指针不仅仅是一个数字。由于documentation states
usize
是指针大小的,因此它的实际大小取决于您正在编译程序的架构。例如,在32位x86计算机上为
usize = u32
,而在x86_64计算机上为usize = u64
。usize
保证始终足够大以容纳数据结构中的任何指针或任何偏移量,而u32
在某些体系结构上可能太小。vx6bjr1n2#
加上@Levans的回答,
**
usize
**的大小取决于引用内存中任何位置所需的大小。在32位目标上,
usize
为4字节,在64位目标上,usize
为8字节