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