2 个版本
| 0.1.1 | 2022年2月14日 |
|---|---|
| 0.1.0 | 2022年2月9日 |
#252 在 无标准库
11KB
68 行
原始整数标记特性
数值类型
整数类型
无符号整数类型包括
| 类型 | 最小值 | 最大值 |
|---|---|---|
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 位宽。
示例
Cargo.toml
## ...
[dependencies]
just_prim_int = { version = "0.1.0" }
## ...
[features]
## https://doc.rust-lang.net.cn/beta/unstable-book/language-features/marker-trait-attr.html
marker_trait_attr = ["just_prim_int/marker_trait_attr"]
src/main.rs
// Uncomment if you want to conditionally use the feature. Remove otherwise.
// #![cfg_attr(feature = "marker_trait_attr", feature(marker_trait_attr))]
use just_prim_int::PrimInt;
trait MyExtensionTraitForPrimInts: PrimInt {
// ...
}
fn main() {}
构建、运行和测试
cargo build <其他选项> --features marker_trait_attr如果你想要该功能,否则使用cargo build <其他选项>cargo run<其他选项> --features marker_trait_attr如果你想使用这个特性,否则请使用cargo build <其他选项>;cargo test <其他选项> --features marker_trait_attr如果你想使用这个特性,否则请使用cargo test <其他选项>。
特性
使用 marker_trait_attr Nightly 特性,每个提供的特质都有一个 #[marker] 属性,这允许通过两个“重叠”的泛型 impl 块更优地实现 PrimInt,一个用于 T: PrimSignedInt,另一个用于 T: PrimUnsignedInt。如果没有 #[marker] 属性,它们将发生冲突。
作者的其他类似软件包
epui- 等大小的(原始)无符号整数用于原始整数:u8 对应 u8,u16 对应 i16 等epsi- 等大小的(原始)有符号整数用于原始整数primitive_promotion- 原始数字类型的提升:u16 对应 u8,i32 对应 i16,f64 对应 f32 等is_signed_trait-IS_SIGNED关联常量的特质max_len_base_10_as_usize- 提供原始整数最大长度常量作为 usize 的特质min_max_traits-MIN和MAX关联常量的特质- 以及其他可以在 crates.io 上找到的特质
替代方案
num_traits::int::PrimInt- 在编写本文时,num_traits无条件提供了一些有用函数的非恒定特质实现。
许可证
根据您的选择,许可方式为 Apache License, Version 2.0 或 MIT 许可证。除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交给此软件包的贡献,将如上所述双重许可,不附加任何额外的条款或条件。