警告:此答案是针对Rust的旧版本,usize已被重新定义为“可以保存任何内存位置”,详见95228以获取更深入的解释,简而言之:指针不仅仅是一个数字。 根据文档所述, usize的大小取决于您编译程序的架构,因为它与指针大小相同。举个例子,在32位x86计算机上,usize = u32,而在x86_64计算机上,usize = u64。 usize保证足够大,可以容纳任何指针或数据结构中的任何偏移量,而u32在某些架构上可能太小。
usize
类型? - Vaynu32
通常很好。标准库始终在适当的情况下使用usize
,而Rust不会自动将u32
转换为usize
,因此您将在需要时看到它们的区别。 - Levansu32
可能也过大。Rust 作为一种系统语言,设计得可以很好地处理这种情况。如果u32
总是太小,那么该语言可能会被设计成将u32
静默转换为usize
。 - Nicholas Pipitoneusize
可能会导致混淆。 - Kostas Kryptosu8
不能静默转换为u16
。但如果提供了into()
而不仅仅是try_into()
,那就更好了。 - Chayim Friedmanu32
被保证为 <=usize
(没有嵌入式系统),那么将会提供into()
而不是静默转换。但我们都没有,因为usize
可以是 8 位、16 位、32 位、64 位,任何东西。~ - Nicholas Pipitone