#utf-8 #byte-slice #string #data #serialization #contain #validate

no-std raw_str

一个包含字节切片的类型,该切片被认为包含UTF-8字符串数据,但尚未经过验证

1 个不稳定版本

0.1.0 2023年9月6日

#2173编码

MIT/Apache

9KB
150

未经验证的字符串切片类型

在处理序列化数据(来自网络或磁盘)时,你通常需要处理字符串。你的规范可能表明这些字符串 应该 是UTF-8,或者你可能在处理不需要UTF-8的旧文件格式,但仍然期望找到UTF-8数据。

验证UTF-8字符串会有成本,包括CPU时间。验证还会增加新的错误模式;当遗留文件中包含非有效的UTF-8字符串时,你会怎么办?你可以完全解析失败文件,或者尽可能容忍错误。在某些情况下,你只是使用一个数据结构中的字符串来查找另一个数据结构中的匹配项,所以字符串是否总是有效的UTF-8并不重要。

此crate提供了RawStr类型,它简单地包装了一个&[u8]值。它提供了DebugDisplay实现,如果可能,将显示字符串。

使用RawStr::from_bytes来包装一个&[u8]值。使用RawStr::as_bytes来获取&[u8]切片。

这并不是一个复杂或功能齐全的crate。它只是满足了一个特殊需求。

作者和致谢

我把自己(Arlie Davis ([email protected])))列为这个crate的“作者”,因为RawStr是一个广泛适用的抽象。然而,我想承认与pdbcrate中的几乎相同的RawString类型的影响。我为一些类似的工作编写了该类型的等效类型,这些工作远远超出了PDB文件的范围,因此我认为最好有一个独立的crate。

无运行时依赖

功能