1 个不稳定版本
0.0.1 | 2021 年 12 月 27 日 |
---|
#134 in #tuple
用于 p-arse
11KB
256 行
duple
概念库,为元组字段添加方法,这些方法针对元组长度泛型,这允许在不使用宏的情况下保持代码长度 O(n)
,其中 n
是元组长度,而不是 O(n^2)
(如果每个方法都需要为每个元组长度实现,则会是这样)• 还应该能够添加从两端弹出和推入元组以及从末尾删除 nth 个元素•操作元组的右端需要将元组从左侧包装,即 ((((), a), b), c)
所有方法都遵循相同的模式:它们接受一个实现了 TupleWrap
的类型,该类型具有所需的 'depth' 的 Wrapped
关联类型•在 'flat' 元组上调用 TupleWrap::wrap
返回相应的嵌套元组,即 (a, b, c)
转换为 (a, (b, (c, ())))
•然后,一个针对嵌套元组的 'tail' 泛型函数删除第 n 层•删除第 n 层的嵌套元组然后解包为相应的 'flat' 元组
use duple::prelude::*;
// Special case — returns the last element, not a tuple!
assert_eq!(('a', 'b').rem0(), 'b');
assert_eq!(('a', 'b').rem1(), 'a');
assert_eq!(('a', 'b', 'c').rem0(), ('b', 'c'));
assert_eq!(('a', 'b', 'c').rem1(), ('a', 'c'));
assert_eq!(('a', 'b', 'c').rem2(), ('a', 'b'));