3个不稳定版本
0.2.0 | 2024年5月21日 |
---|---|
0.1.1 | 2024年5月20日 |
0.1.0 | 2024年5月20日 |
#995 in 编码
17KB
331 行
小数
小数可以用来描述一些受限制的数据。例如,对齐字节数
use small_num::small_num;
small_num! {
#[derive(Clone, Debug, PartialEq, Copy, Eq, PartialOrd, Ord, Hash)]
pub enum AlignBytes: [1, 2, 4];
}
let bytes = AlignBytes::new(2);
assert_eq!(bytes, Some(AlignBytes::_2));
assert_eq!(AlignBytes::new(3), None);
assert_eq!(std::mem::size_of::<Option<AlignBytes>>(), 1);
或适用于特定范围的整数
use small_num::small_num;
small_num! {
#[derive(Clone, Debug, PartialEq, Copy, Eq, PartialOrd, Ord, Hash)]
pub enum U7: ..128;
}
assert_eq!(U7::new(0), Some(U7::_0));
assert_eq!(U7::new(50), Some(U7::_50));
assert_eq!(U7::new(127), Some(U7::_127));
assert_eq!(U7::new(128), None);
assert_eq!(std::mem::size_of::<Option<U7>>(), 1);
可以使用as
运算符将其转换为整数
use small_num::small_num;
small_num! {
#[derive(Clone, Debug, PartialEq, Copy, Eq, PartialOrd, Ord, Hash)]
pub enum Num50to100: 50..=100;
}
assert_eq!(Num50to100::new(69).unwrap() as u32, 69);
where子句可以用来推导支持的特质
use small_num::small_num;
small_num! {
#[derive(Clone)]
pub enum MySmallNumber: [0, 42, 121]
where
Self: Debug + Serialize;
}
where子句中的支持特质
Debug
- 将您的Small数以常规数字的形式打印出来Serialize
(带有serde
特性)Deserialize
(带有serde
特性)
crate特性
serde
启用Serialize
和Deserialize
推导。
依赖项
~175KB