11个版本
| 0.5.6 | 2023年3月18日 |
|---|---|
| 0.5.3 | 2022年9月14日 |
| 0.5.2 | 2022年4月1日 |
| 0.5.1 | 2022年1月1日 |
| 0.2.0 | 2020年6月4日 |
#894 in 过程宏
235每月下载量
在 2 个库中(通过 bounded-integer)使用
74KB
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泛型的有界整数
你还可以通过使用此库中基于const泛型的类型创建临时的有界整数,例如
let num = <BoundedU8<0, 7>>::new(5).unwrap();
assert_eq!(num, 5);
这些整数使用起来更简洁,因为它们不需要类型声明或显式的名称,并且与其他不同范围的有界整数交互得更好。然而,由于const泛型的限制,它们不实现某些特性,如 Default。
no_std
该库中的所有整数仅依赖于libcore,因此可以在 #![no_std] 环境中运行。
库功能
默认情况下,没有启用库功能。
std: 与std互操作 —— 意味着alloc。启用以下功能Error的实现ParseError。
alloc: 与alloc互操作。启用以下功能- 在
Vec和VecDeque上使用基于const泛型的整数的索引支持。
- 在
宏:启用bounded_integer!宏。类型:启用使用const泛型的有界整数类型。arbitrary1:为有界整数实现Arbitrary。当使用有界整数作为模糊测试输入时很有用。bytemuck1:为所有有界整数实现Contiguous,并为支持它的宏生成的有界整数实现Zeroable。num-traits02:为所有const泛型有界整数实现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.7–1.2MB
~28K SLoC