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 [email protected]
本软件的使用、复制、修改和/或分发(无论是否付费)均获得许可,前提是上述版权声明和本许可声明必须包含在所有副本中。
软件按“原样”提供,作者对此软件不提供任何明示或暗示的保证,包括但不限于对其商业性和适用性的保证。在任何情况下,作者均不对因使用或性能问题而导致的任何特殊、直接、间接或后果性损害或任何损害(包括使用、数据或利润的损失)承担责任,不论此类损害是基于合同、疏忽或其他侵权行为,是否因使用或性能而引起。
依赖项
~0.7–1.2MB
~28K SLoC