2个稳定版本
1.1.0 | 2023年10月25日 |
---|---|
1.0.0 | 2023年10月25日 |
#822 in 过程宏
20KB
602 行
原始包装
原始包装是一个小型派生宏,用于生成原始包装结构体的操作特征实现,使内部值透明
#[derive(Primitive)]
struct Int(u64);
fn main() {
let input = Int(0xFF0000);
let mask = Int(0xFF);
let result = input >> 16 & mask;
assert_eq!(result, 0xFF);
}
实现的特征包括
- 算术:
Add
、Sub
、Mul
、Div
、Rem
、Neg
- 位运算:
Not
、BitAnd
、BitOr
、BitXor
、Shl
、Shr
- 透传格式化:
Debug
、Display
、Binary
、LowerExp
、LowerHex
、Octal
、UpperExp
、UpperHex
- 比较:与内部类型相关的
PartialEq
/PartialOrd
- 累积:
Sum
和Product
默认情况下,所有上述特征都得到了实现。也可以单独选择这些组
#[derive(Primitive)]
#[primwrap(arithmetic, bitwise, formatting, comparison, accumulation)]
struct Int(u64);
现有技术
此crate提供与newtype_derive crate类似的功能,但派生的特征是分别指定的。它更通用,适用于所有新类型模式,而此crate仅设计用于包装整数、浮点数和bool
的新类型。如果您需要更细粒度的特征控制,请使用newtype_derive。
依赖项
~1–1.4MB
~29K SLoC