#string #packed #array #static

packed_str

将不可变字符串存储在单个打包分配中

2个版本

0.2.1 2023年7月10日
0.2.0 2023年7月10日

#10 in #strings

MIT 许可证

11KB
174

打包不可变字符串

PackedStr 是当所有字符串都是不可变时,Vec<String> 的替代品。

使用 PackedStr 的好处是所有的字符串数据都存储在一个单独的堆分配中。与每个 String 都有自己堆分配的 Vec<String> 相比,这可能会节省空间,每个 String 有自己的堆分配,以及相关的成本(额外的 String 容量、分配器元数据、堆碎片化)。

此外,每个 String 都存储自己的大小和容量,这在 PackedStr 的设计中是不必要的。

PackedStr 实现为一个包含所有字符串数据的大缓冲区和一个指向缓冲区的索引列表。每个字符串切片都可以从其索引重建,以及下一个字符串的索引(或最后一个字符串的缓冲区末尾)。


lib.rs:

打包不可变字符串

PackedStr 是当所有字符串都是不可变时,Vec<String> 的替代品。

使用 PackedStr 的好处是所有的字符串数据都存储在一个单独的堆分配中。与每个 String 都有自己堆分配的 Vec<String> 相比,这可能会节省空间,每个 String 有自己的堆分配,以及相关的成本(额外的 String 容量、分配器元数据、堆碎片化)。

此外,每个 String 都存储自己的大小和容量,这在 PackedStr 的设计中是不必要的。

PackedStr 实现为一个包含所有字符串数据的大缓冲区和一个指向缓冲区的索引列表。每个字符串切片都可以从其索引重建,以及下一个字符串的索引(或最后一个字符串的缓冲区末尾)。

无运行时依赖