2个版本
0.1.1 | 2022年1月27日 |
---|---|
0.1.0 | 2022年1月27日 |
#395 在 无标准库 中
26 每月下载量
在 3 个包中使用(通过 midpoint)
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
可以用于计算对象或数组指针之间的差异,并可以访问对象内的每个字节以及末尾之后的一个字节。
usize
和 isize
至少为16位宽。
注意:许多Rust代码可能假设指针、
usize
和isize
要么是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);
类似项
- C++: std::make_signed
许可
根据您的要求,在以下许可协议中选择一项:[a href="https://github.com/johnscience/epsi/blob/4f3ee70ab4d7f3c5feb799764e4af71961dc9c16/LICENSE-APACHE" rel="noopener ugc nofollow">Apache License, Version 2.0MIT license。除非您明确说明,否则根据 Apache-2.0 许可协议定义,您有意提交的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。