#tuple #no-alloc #no-std

no-std tuplez

以递归形式表示的元组

48个版本 (12个破坏性)

0.14.15 2024年6月5日
0.13.0 2024年5月13日
0.8.1 2024年3月5日

#842 in 数据结构


3 crates 中使用

MIT/Apache

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(例如 EqAdd),则 Tuple 也实现了该 Trait
  • 遍历元组的所有元素,或折叠元组。
  • 当元组的元素数量不超过32时,则可以将其从/to转换为原始元组或原始数组。

请查看 文档 了解详细信息。

依赖关系

~265–780KB
~18K SLoC