15 个版本 (1 个稳定版)

1.0.0 2022 年 9 月 26 日
1.0.0-alpha.12022 年 7 月 15 日
0.6.0 2022 年 4 月 12 日
0.5.2 2021 年 11 月 19 日
0.3.1-alpha2020 年 7 月 23 日

#2212 in 魔法豆

Download history 144/week @ 2024-03-30 104/week @ 2024-04-06 103/week @ 2024-04-13 92/week @ 2024-04-20 86/week @ 2024-04-27 83/week @ 2024-05-04 84/week @ 2024-05-11 105/week @ 2024-05-18 82/week @ 2024-05-25 106/week @ 2024-06-01 62/week @ 2024-06-08 78/week @ 2024-06-15 75/week @ 2024-06-22 15/week @ 2024-06-29 31/week @ 2024-07-06 169/week @ 2024-07-13

303 每月下载
12 个crate中使用 (6 个直接使用)

Apache-2.0

94KB
2K SLoC

bee-ternary


lib.rs:

一个通用的三进制操作、翻译和编码 crate。

特性

  • 创建具有多种编码的三进制和 tryte 缓冲区
  • 安全的编码 API,允许高效地操作和共享三进制和 tryte 缓冲区和切片
  • 三进制缓冲区和切片的突变
  • 三进制 BigInt 实现
  • 平衡和不平衡的三进制
  • serde 支持

编码

此 crate 支持许多不同的三进制编码。编码允许在不同特性之间进行权衡。

T1B1 是规范默认编码,用单个字节内存表示每个三进制。它是操作最快的编码,因为在操作过程中不需要进行位操作来从内存中打包和提取它。因此,它还允许某些额外特性,如可变分块和通过普通切片访问其内容。

T3B1 也常被使用。它提供了良好的压缩效果,并且具有与 Tryte 切片相同的位表示。因此,它是唯一可以无额外开销转换为 tryte 切片的编码。

T5B1 是最压缩的编码。它提供了非常高的存储密度(几乎是最优的),并且是这个crate支持的密度最大的编码。

上述三种编码中,可能有一种会满足您的需求。此外,这个crate还为了完整性支持 T2B1T4B1

字节对齐

这个crate支持创建三进制切片的子切片。为此,它除了存储三进制切片之外,还会存储额外的元数据,以便正确识别缓冲区开始的索引。对于压缩编码,如 T3B1,这个起始索引(实际上,结束索引)可能不会恰好落在字节边界上。

这个crate尽力避免这个事实带来的负面影响,但遗憾的是,一些仍然泄漏到API中。例如,一些方法可能在切片没有字节对齐的起始索引或其他不满足某些不变性时引发恐慌。但是,每个方法的panic行为都有文档说明,这样您可以轻松避免这种情况。

当文档提到“字节对齐”时,它指的是起始索引是否是压缩因子的倍数。例如,字节对齐的 T3B1 缓冲区将始终从原始缓冲区的一个索引开始,该索引是3的倍数。

依赖关系

~94–325KB