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