17个版本 (6个重大更新)
0.7.0 | 2024年5月27日 |
---|---|
0.5.2 | 2024年4月22日 |
0.5.1 | 2024年3月5日 |
#1376 在 过程宏 中
在 4 个crate中使用 (通过 tuplez)
35KB
962 行
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时,它可以转换为/从原始元组或原始数组转换。
请参阅文档以获取详细信息。
依赖关系
~260–700KB
~17K SLoC