4 个稳定版本
1.2.0 | 2024年3月25日 |
---|---|
1.1.1 | 2024年3月23日 |
1.0.0 | 2024年3月23日 |
#754 在 Rust 模式
每月 139 下载
12KB
214 行
Wrappr
wrappr
是一个包含一些有用封装特质的库
以下为 4 组特质
- a
wrapper
是一个低成本的封装器,它构建一个新的泛型输入类型的类型 - a
composer
是一个可能昂贵的操作,它接受一个泛型输入类型,并在其中组合它 - a
injectable
是封装器的语义相反,它是自动实现的,只是对象和泛型交换了位置 - a
embedable
是组合器的语义相反,它是自动实现的,只是对象和泛型交换了位置
示例
封装器
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]);
组合器
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]);
可注入的
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]);
可嵌入的
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]);