#原始类型 #原始整型 #整型 #扩展

无std epsi

等宽(原始)有符号整型用于原始整型:i8对应u8,i16对应i16等

2个版本

0.1.1 2022年1月27日
0.1.0 2022年1月27日

#395无标准库

26 每月下载量
3 个包中使用(通过 midpoint

MIT/Apache

9KB

等宽(原始)有符号整型用于原始整型

根据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位指针支持有限,可能需要库显式地注意并承认才能支持。

为什么需要这个特性

所有原始数值整数类型,包括机器相关类型,都具有已知的大小,可以通过 core::mem::size_of<T>() 获取,以及具有确切大小的相应有符号或无符号类型。例如,C++ 20标准的中点算法既依赖于等宽原始无符号整数,也依赖于等宽原始有符号整数。此包提供了后者。

有符号整数

类型 大小 等宽原始有符号整数
i8 1字节 i8
i16 2 字节 i16
i32 4 字节 i32
i64 8 字节 i64
i128 16 字节 i128
isize 平台相关 isize

无符号整数

类型 大小 等宽原始有符号整数
u8 1字节 i8
u16 2 字节 i16
u32 4 字节 i32
u64 8 字节 i64
u128 16 字节 i128
usize 平台相关 isize

示例

您会发现 EquisizedPrimitiveSignedIntExt 输入起来相当长。为了使其更短,建议将导入的特质重命名为 EPSI,这是与 crate 同名的。因为它的用途通常需要配合 完全限定语法 使用,这种缩写是必不可少的。

  use epsi::EquisizedPrimitiveSignedIntExt as EPSI;
  let a: u8 = u8::MAX;
  assert_eq!(a as <u8 as EPSI>::EquisizedPrimitiveSignedInt, -1i8);

类似项

许可

根据您的要求,在以下许可协议中选择一项:[a href="https://github.com/johnscience/epsi/blob/4f3ee70ab4d7f3c5feb799764e4af71961dc9c16/LICENSE-APACHE" rel="noopener ugc nofollow">Apache License, Version 2.0MIT license。
除非您明确说明,否则根据 Apache-2.0 许可协议定义,您有意提交的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

无运行时依赖