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 许可证定义的,您有意提交给此软件包的贡献,将如上所述双重许可,不附加任何额外的条款或条件。