Expand description
§Wrappr
wrappr is a libary for some useful wrapping traits
the 4 trait groups are as follows:
- a
wrapperis a cheap wrapper that constructs a new type, generic over the input type - a
composeris a potentially costly operation that takes a generic input type, and composes it within itself - a
injectableis the semantic opposite of a wrapper, it is automatically implemented and is just the object and generic swapped - a
embedableis the semantic opposite of a composer, it is automatically implemented and is just the object and generic swapped
§Examples
§Wrapper
let x: u8 = 1;
let y: u8 = 2;
let z: Vec<u8> = vec![3, 4];
let yz: Vec<u8> = y.wrap(z);
assert_eq!(yz, vec![2, 3, 4]);
let xyz: Vec<u8> = x.wrap(yz);
assert_eq!(xyz, vec![1, 2, 3, 4]);§Composer
let mut x: Vec<u8> = vec![1, 2];
let y: Vec<u8> = vec![3, 4];
let z: u8 = 5;
x.compose(y);
assert_eq!(x, vec![1, 2, 3, 4]);
x.compose(z);
assert_eq!(x, vec![1, 2, 3, 4, 5]);§Injectable
let x: u8 = 1;
let y: u8 = 2;
let z: Vec<u8> = vec![3, 4];
let yz: Vec<u8> = z.inject(y);
assert_eq!(yz, vec![2, 3, 4]);
let xyz: Vec<u8> = yz.inject(x);
assert_eq!(xyz, vec![1, 2, 3, 4]);§Embedable
let mut x: Vec<u8> = vec![1, 2];
let y: Vec<u8> = vec![3, 4];
let z: u8 = 5;
y.embed(&mut x);
assert_eq!(x, vec![1, 2, 3, 4]);
z.embed(&mut x);
assert_eq!(x, vec![1, 2, 3, 4, 5]);Modules§
- composer
- a potentially costly operation that takes a generic input type, and composes it within itself
- embedable
- the semantic opposite of a composer, it is automatically implemented and is just the object and generic swapped
- hashmap_
impl - injectable
- the semantic opposite of a wrapper, it is automatically implemented and is just the object and generic swapped
- vec_
impl - implementations for vectors
- wrapper
- a cheap wrapper that construct a new type, generic over the input type