# Primitive Wrapper Primitive Wrapper is a small derive macro for generating operation trait implementations for primitive wrapper structs, making the inner value transparent: ```rust #[derive(Primitive)] struct Int(u64); fn main() { let input = Int(0xFF0000); let mask = Int(0xFF); let result = input >> 16 & mask; assert_eq!(result, 0xFF); } ``` The implemented traits are: - Arithmetic: `Add`, `Sub`, `Mul`, `Div`, `Rem`, `Neg` - Bitwise: `Not`, `BitAnd`, `BitOr`, `BitXor`, `Shl`, `Shr` - Passthrough Formatting: `Debug`, `Display`, `Binary`, `LowerExp`, `LowerHex`, `Octal`, `UpperExp`, `UpperHex` - Comparison: `PartialEq`/`PartialOrd` with the inner type - Accumulation: `Sum` and `Product` By default, all of the above traits are implemented. These groups can also be selected individually: ```rust #[derive(Primitive)] #[primwrap(arithmetic, bitwise, formatting, comparison, accumulation)] struct Int(u64); ``` ## Prior Art This crate provides similar functionality to the [newtype_derive](https://crates.io/crates/newtype_derive) crate, but the derived traits are specified individually. It is more generalized for all new-type patterns, whereas this crate is designed only for new-types wrapping integers, floats, and `bool`. Use newtype_derive if you need more fine-grained control over the traits implemented.