1个不稳定版本
0.1.0 | 2022年2月2日 |
---|
#1408 in 数学
用于 2 crates
10KB
94 行
十进制数系中的最大长度作为usize
此crate提供了MaxLenBase10AsUsize
特质,目前所有原生整数都已实现。
根据Rust的参考,Rust的原生数字整数类型是:
数字类型
整数类型
无符号整数类型包括
类型 | 最小值 | 最大值 |
---|---|---|
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 |
平台依赖的整数类型
usize
类型是一个与平台指针类型位数相同的无符号整数类型。它可以表示进程中的每个内存地址。
isize
类型是一个与平台指针类型位数相同的有符号整数类型。对象和数组大小的理论上限是最大的isize
值。这确保了isize
可以用于计算对象或数组指针之间的差异,并可以访问对象内部以及结束后的一个字节。
usize
和isize
至少有16位宽。
注意:许多Rust代码可能假设指针、
usize
和isize
是32位或64位。因此,16位指针支持有限,可能需要库的明确关注和认可才能支持。
为什么需要这个特质
为了有效地为存储原始数值类型的字符串表示形式分配(或预留)内存,需要最大占用容量以避免重新分配和/或不必要的复制。
示例
您会注意到 MaxLenBase10AsUsize
输入较长,它包含了数字系统和期望的常量类型等详细信息。为了使其更短,并更适合生产代码(而不是系统级或科学代码),建议将导入的特性重命名为 MaxLen
。为了清晰起见,您还可以选择使用 完全限定语法,尽管这不是必需的。
use max_len_base_10_as_usize::MaxLenBase10AsUsize as MaxLen;
assert_eq!(u8::MAX_LEN_BASE_10_AS_USIZE, <u8 as MaxLen>::MAX_LEN_BASE_10_AS_USIZE);
assert_eq!(u8::MAX_LEN_BASE_10_AS_USIZE, 3usize);
许可证
根据您的选择,本软件受以下任一许可证的许可:Apache许可证第2版 或 MIT许可证。除非您明确声明,否则根据Apache-2.0许可证的定义,您有意提交的任何贡献,包括但不限于本软件包,将如上所述双重许可,不附加任何额外条款或条件。