48个版本 (12个破坏性)
0.14.15 | 2024年6月5日 |
---|---|
0.13.0 |
|
0.8.1 | 2024年3月5日 |
#842 in 数据结构
在 3 crates 中使用
305KB
3K SLoC
tuplez
此crate引入了一种以递归形式表示的元组类型,而不是并行形式。
动机
原始元组类型以并行形式表示,如
(a, b, c, d ...)
由于Rust不支持变长泛型,我们无法为具有任意数量元素的原始元组添加方法。
目前,大多数元组crate使用声明性宏来实现小于一定限制(通常是32)的元素数量元组的方法。
为了解决这个问题,tuplez引入了一种以递归形式表示的 Tuple
类型,如下所示
Tuple(a, Tuple(b, Tuple(c, Tuple(d, ...))))
这种表示的优点是可以为所有元组递归地实现方法,并且元组的元素数量不再有限制。而且,在几乎所有情况下,Tuple
占用的内存不比原始元组多。
功能
- 创建任意数量的元素元组。
- 在任何索引处访问元组中的元素,或通过它们的类型。
- 将元素推送到元组或从元组中弹出元素。
- 连接两个元组或将元组拆分为两部分。
- 丰富的元组操作,例如:反转、左旋转、zip。
- 获取子序列。
- 如果所有元素类型实现了
Trait
(例如Eq
、Add
),则Tuple
也实现了该Trait
。 - 遍历元组的所有元素,或折叠元组。
- 当元组的元素数量不超过32时,则可以将其从/to转换为原始元组或原始数组。
请查看 文档 了解详细信息。
依赖关系
~265–780KB
~18K SLoC