16 个版本
| 0.5.7 | 2023 年 6 月 15 日 |
|---|---|
| 0.5.6 | 2023 年 3 月 18 日 |
| 0.5.5 | 2023 年 2 月 14 日 |
| 0.5.3 | 2022 年 9 月 14 日 |
| 0.1.1 | 2016 年 6 月 5 日 |
#111 在 Rust 模式
7,728 每月下载量
用于 41 个包 (直接使用 18 个)
91KB
1.5K SLoC
有界整数
此包提供了两种有界整数类型,用于在 Rust 中使用。
宏生成的有界整数
bounded_integer! 宏允许你定义自己的有界整数类型,给定它所占据的特定范围。例如
bounded_integer! {
struct MyInteger { 0..8 }
}
let num = MyInteger::new(5).unwrap();
assert_eq!(num, 5);
此宏支持 struct 和 enum。请参阅 examples 模块以了解生成的类型的文档。
基于 const generics 的有界整数
你也可以通过使用此库中基于 const generics 的类型创建临时有界整数,例如
let num = <BoundedU8<0, 7>>::new(5).unwrap();
assert_eq!(num, 5);
这些整数使用起来更简洁,因为它们不需要类型声明或显式名称,并且与其他具有不同范围的整数交互更好。然而,由于 const generics 的限制,它们不实现一些特性,如 Default。
no_std
此包中的所有整数仅依赖于 libcore,因此可以在 #![no_std] 环境中运行。
包功能
默认情况下,没有启用包功能。
std: 与std互操作 — 意味着启用alloc。启用以下功能- 为
Error实现了ParseError。
- 为
alloc: 与alloc互操作。启用以下功能- 在
Vec和VecDeque上使用基于 const generics 的整数进行索引的支持。
- 在
macro:启用bounded_integer!宏。types:启用使用 const generics 的有界整数类型。arbitrary1:为有界整数实现Arbitrary。这在使用有界整数作为模糊测试输入时很有用。bytemuck1:为所有有界整数实现Contiguous,并为支持它的宏生成的有界整数实现Zeroable。num-traits02:为所有 const-generic 有界整数实现Bounded、AsPrimitive、FromPrimitive、NumCast、ToPrimitive、CheckedAdd、CheckedDiv、CheckedMul、CheckedNeg、CheckedRem、CheckedSub、MulAdd、SaturatingAdd、SaturatingMul和SaturatingSub。serde1:为有界整数实现Serialize和Deserialize,确保所有值都不会超出范围。此功能有一个已弃用的别名serde。zerocopy06:为所有有界整数实现AsBytes,并为宏生成的实现Unaligned。step_trait:实现Step特性,允许有界整数易于在范围内使用。这需要您使用 nightly 版本,并在您的 crate 根目录中使用宏时放置#![feature(step_trait)]。
许可协议
版权所有 © 2016,Curtis McEnroe curtis@cmcenroe.me
在此特此授予使用、复制、修改和/或以任何目的免费或收费分发此软件的许可,前提是上述版权声明和本许可声明出现在所有副本中。
本软件按“原样”提供,作者对与该软件相关的所有保证,包括所有暗示的适销性和适用性保证,予以放弃。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用、数据或利润损失引起的任何损害负责,无论是基于合同、疏忽或其他侵权行为,无论损害是否源于或与使用或性能该软件有关。
依赖项
~0–530KB