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 [email protected]
在此特此授予使用、复制、修改和/或以任何目的免费或收费分发此软件的许可,前提是上述版权声明和本许可声明出现在所有副本中。
本软件按“原样”提供,作者对与该软件相关的所有保证,包括所有暗示的适销性和适用性保证,予以放弃。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用、数据或利润损失引起的任何损害负责,无论是基于合同、疏忽或其他侵权行为,无论损害是否源于或与使用或性能该软件有关。
依赖项
~0–530KB