1 个不稳定版本
使用旧的 Rust 2015
| 0.1.0 | 2018年4月30日 |
|---|
#2045 在 数据结构
33KB
773 行
fricgan - 一个简单的(基于字节的)crate
fricgan 是一个简单的字节操作 crate,它针对的是在 std 和 no_std 中的常用操作。我将其发布出来,因为它是我的重复使用代码的一部分,并且有人多次请求访问它。
内部有大量的直接指针操作,只要传入系统的缓冲区大小正确,就完全安全。默认情况下,safety-checks 功能是开启的,它在复制之前安装了一个断言。默认复制是安全的(使用切片迭代),但可以使用 copy_nonoverlapping(也可以通过 safety-checks 选项保护)进行复制,并且由 unsafe 功能保护。
功能
所有 IO 类型都受功能保护(因此 io-{i,u{8,16,32,64{}),以及 VLQ 特性(通过 vlq)。仅实现了 32 位和 64 位无符号值用于 VLQ,并且它们受 vlq-{32,64{} 功能保护。这些可以根据特定应用程序或库的需求轻松调整。
字符串支持(对于那些可以使用 std 的人来说)包括在 io-string 或 vlq-string 之后。需要实现一个整数类型的 IO 类型来使用 FricganString(io-string),或者更精确地说
where V: ToPrimitive + FromPrimitive + Unsigned + IO
VLQString(vlq-string)需要 VLQ
where V: ToPrimitive + FromPrimitive + Unsigned + VLQ
io-string 和 vlq-string 需要 num,该模块使用 std 支持进行编译。(有办法不使用 num 来实现这一点,但在这个包中不需要重新发明轮子,因为它提供了合理的保护。)
默认配置禁用了一切,除了 IO 和默认的 [u8] 实现。(这些不能通过特性来禁用。)
所有构建都实现了 IO 在 [u8] 上,因为它在内部使用(这是每个安全检查发生的地方,除了使用切片索引的单字节变体之外)。
变更
变更记录保存在 CHANGELOG.md(存储库根目录中),从版本 0.1.0 开始。(在 0.1 之前有一个短暂的公开发布,一些格式修复,以及浮点类型的添加。在 0.1 之前也添加了测试。)
许可证
Apache 2.0 或 MIT,任选其一。
依赖
~38KB