17个版本 (6个重大更新)

0.7.0 2024年5月27日
0.5.2 2024年4月22日
0.5.1 2024年3月5日

#1376过程宏


4 个crate中使用 (通过 tuplez)

MIT/Apache

35KB
962

tuplez

这个crate引入了一种以递归形式表示而不是并行形式的元组类型。

动机

原始元组类型以并行形式表示,例如

(a, b, c, d ...)

由于Rust不支持可变参数泛型,因此我们无法为具有任意元素数量的原始元组添加方法。

目前,大多数元组crate使用声明性宏来实现元素数量小于一定限制(通常为32)的元组的方法。

为了解决这个问题,tuplez引入了一种以递归形式表示的 Tuple 类型,例如

Tuple(a, Tuple(b, Tuple(c, Tuple(d, ...))))

这种表示的优势在于可以为所有元组递归地实现方法,并且元组的元素数量不再有限制。此外,在几乎所有情况下,Tuple所占用的内存不比原始元组多。

功能

  • 创建任意数量的元素的元组。
  • 在任意索引处访问元组中的元素,或通过它们的类型访问。
  • 将元素推入元组或将元素从元组中弹出。
  • 连接两个元组或将元组拆分为两部分。
  • 丰富的元组操作,例如:反转、左旋转、zip。
  • 获取子序列。
  • 如果所有元素类型都实现了 Trait (例如 EqAdd),则 Tuple 也实现了该 Trait
  • 遍历元组的所有元素,或折叠元组。
  • 当元组的元素数量不超过32时,它可以转换为/从原始元组或原始数组转换。

请参阅文档以获取详细信息。

依赖关系

~260–700KB
~17K SLoC