#byte #io #vlq #default #applications #unsigned #vlq-string

no-std fricgan

一个简单的用于在字节上进行基本输入输出的 crate

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018年4月30日

#2045数据结构

MIT/Apache

33KB
773

fricgan - 一个简单的(基于字节的)crate

Build Status Build status

fricgan 是一个简单的字节操作 crate,它针对的是在 stdno_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-stringvlq-string 之后。需要实现一个整数类型的 IO 类型来使用 FricganStringio-string),或者更精确地说

where V: ToPrimitive + FromPrimitive + Unsigned + IO

VLQStringvlq-string)需要 VLQ

where V: ToPrimitive + FromPrimitive + Unsigned + VLQ

io-stringvlq-string 需要 num,该模块使用 std 支持进行编译。(有办法不使用 num 来实现这一点,但在这个包中不需要重新发明轮子,因为它提供了合理的保护。)

默认配置禁用了一切,除了 IO 和默认的 [u8] 实现。(这些不能通过特性来禁用。)

所有构建都实现了 IO[u8] 上,因为它在内部使用(这是每个安全检查发生的地方,除了使用切片索引的单字节变体之外)。

变更

变更记录保存在 CHANGELOG.md(存储库根目录中),从版本 0.1.0 开始。(在 0.1 之前有一个短暂的公开发布,一些格式修复,以及浮点类型的添加。在 0.1 之前也添加了测试。)

许可证

Apache 2.0 或 MIT,任选其一。

依赖

~38KB