#长度 #数字 #特质 #数字 #数学 #原生整数

无std 最大_len_base_10_as_usize

提供原生整数作为usize的常量最大长度的特质

1个不稳定版本

0.1.0 2022年2月2日

#1408 in 数学


用于 2 crates

MIT/Apache

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可以用于计算对象或数组指针之间的差异,并可以访问对象内部以及结束后的一个字节。

usizeisize至少有16位宽。

注意:许多Rust代码可能假设指针、usizeisize是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许可证的定义,您有意提交的任何贡献,包括但不限于本软件包,将如上所述双重许可,不附加任何额外条款或条件。

无运行时依赖