For all the primitive integer types in Rust, the from_str_radix method, which converts a string in the given radix to an integer, takes a u32 integer as the argument for the radix. Given that the function panics if the radix is not in the range [2, 36], why doesn't from_str_radix take a u8 instead of a u32, as a u8 can already store larger integers than the largest allowed radix?
This sort of thing also occurs in other integer methods such as pow. The largest value of a u8 is 255 and 2^255 is already larger than the maximum value that can be stored by a u128 (the largest integer type in Rust), so why does the pow function take a u32, seeing as most u32 values for the exponent will cause an overflow?