#array #const #vector

nightly no-std arrav

基于哨兵的零内存向量

6个版本

0.2.0 2020年4月7日
0.1.4 2020年4月5日

#2415 in 数据结构

每月27次下载

MIT/Apache

50KB
842

Crates.io Documentation Build Status Codecov

一种基于哨兵的、无内存堆的、类似Vec的类型。

数组很棒,因为它们不需要分配。但是数组是固定大小的。

切片很棒,因为你可以使它们更小。但是切片不是Sized

向量很棒,因为你可以使它们更大。但是向量需要分配。

此类型提供了一种类似向量的类型,但其表示方式与数组完全相同。与其它基于数组的类似向量类型不同,但与C风格字符串和数组类似,Arrav使用哨兵值来指示未占用的元素。这使得pushpop稍微慢一些,但避免了需要单独存储长度。这种权衡是哨兵值不能再存储在数组中。

Arrav适用于当你有一个但可变的、需要紧凑存储的值数时(例如,因为它们将被存储在大量元素中)。这也是为什么在实际情况中,“搜索”哨兵值以确定数组长度(以及pushpop)不太可能成为问题。

与使用NULL作为哨兵的C风格字符串和数组不同,Arrav使用类型的最大值(如std::u8::MAX)。这意味着除非你正在饱和类型的范围,否则你甚至不会注意到哨兵。

许可

根据以下之一许可

任选其一。

贡献

除非你明确说明,否则根据Apache-2.0许可定义的、你有意提交以包含在作品中的任何贡献,将双重许可如上所述,没有任何附加条款或条件。

无运行时依赖