数值类型
整数类型
无符号整数类型包括:
| 类型 | 最小值 | 最大值 |
|---|---|---|
u8 | 0 | 28-1 |
u16 | 0 | 216-1 |
u32 | 0 | 232-1 |
u64 | 0 | 264-1 |
u128 | 0 | 2128-1 |
有符号二进制补码整数类型包括:
| 类型 | 最小值 | 最大值 |
|---|---|---|
i8 | -(27) | 27-1 |
i16 | -(215) | 215-1 |
i32 | -(231) | 231-1 |
i64 | -(263) | 263-1 |
i128 | -(2127) | 2127-1 |
浮点类型
IEEE 754-2008 “binary32” 和 “binary64” 浮点类型分别是 f32 和 f64。
机器相关整数类型
usize 类型是无符号整数类型,其位数与平台的指针类型相同。它可以表示进程中的每个内存地址。
Note
虽然
usize可以表示每个地址,但将指针转换为usize不一定是可逆操作。有关更多信息,请参阅类型转换表达式、std::ptr和[来源]provenance 的文档。
isize 类型是有符号二进制补码整数类型,其位数与平台的指针类型相同。对象和数组大小的理论上限是最大 isize 值。这确保 isize 可用于计算指向对象或数组的指针之间的差异,并且可以寻址对象内的每个字节以及末尾之后的一个字节。
usize 和 isize 至少为 16 位宽。
Note
许多 Rust 代码可能假定指针、
usize和isize是 32 位或 64 位。因此,16 位指针支持是有限的,可能需要库的明确关注和确认才能支持。
位有效性
对于每种数值类型 T,T 的位有效性等同于 [u8; size_of::<T>()] 的位有效性。未初始化的字节不是有效的 u8。