【发布时间】:2021-05-25 12:17:49
【问题描述】:
对于 Rust 中的所有原始整数类型,from_str_radix 方法将给定基数中的字符串转换为整数,将u32 整数作为基数的参数。鉴于如果基数不在[2, 36] 范围内,函数会出现恐慌,为什么from_str_radix 不采用u8 而不是u32,因为u8 已经可以存储比允许的最大整数更大的整数基数?
这种事情也发生在其他整数方法中,例如pow。 u8的最大值是255,而2^255已经大于u128(Rust中最大的整数类型)所能存储的最大值,那为什么pow函数要取一个u32,看到大多数u32 的指数值会导致溢出吗?
【问题讨论】:
-
可能与对齐有关。
u32值可能保证是 4 字节对齐的,这可能对内部操作很重要。另一种可能的解释是人们可能会使用评估为u32的表达式来调用它,这会导致转换范围缩小。第三种选择是偶然的。
标签: rust