3个稳定版本
使用旧的Rust 2015
1.1.1 | 2021年4月19日 |
---|---|
1.1.0 | 2021年4月13日 |
1.0.8 |
|
1.0.6 |
|
1.0.1 |
|
#2223 in 数据结构
1,343 每月下载量
55KB
1.5K SLoC
rust-stackvector
"StackVec": 堆分配数组的类似向量的门面。
与ArrayVec的比较
ArrayVec 是一个相对成熟的堆向量实现,使用与 stackvector 一样的后端数组。ArrayVec 和 StackVec 之间的主要区别在于与 Vec 的 API 兼容性,以及创建的简便性。
与 Vec 的 API 兼容性
ArrayVec 包含了从 Vec 的 API 中修改的众多内容,实际上需要包装器才能像 Vec 一样使用。在某些情况下,额外的功能是可取的(例如,ArrayVec 有 push
,如果容器超出数组的界限会恐慌,try_push
和 push_unchecked
,而 stackvector 只有一个 push
)。在其他情况下,ArrayVec 缺少许多简化与 Vec 一起工作的方法。例如,ArrayVec 缺少
- 去重(
dedup
,dedup_by
,dedup_by_key
)。 - 插入多个元素(
insert_many
)(非标准)。
同样,stackvector 也缺少 Vec 中不存在的一些便利方法
- 堆分配数组已满(
is_full
)。 - 无需丢弃即可处理(
dispose
)。
版本支持
ArrayVec 和 stackvector 都支持 Rustc 1.20.0 及更早的版本。
许可
StackVector 是从 Servo 的 smallvec 衍生出来的,就像 smallvec 一样,它可以在 MIT 或 Apache 2.0 许可证下双许可。
版本支持
Stackvector 已经在 Rustc 1.36.0 版本上进行了测试(需要 mem::MaybeUninit
)。
依赖项
~30KB