#vec #stack #vector #no-std

no-std stackvector

StackVec: 堆分配数组的类似向量的门面

3个稳定版本

使用旧的Rust 2015

1.1.1 2021年4月19日
1.1.0 2021年4月13日
1.0.8 2019年9月5日
1.0.6 2019年6月20日
1.0.1 2018年12月7日

#2223 in 数据结构

Download history 353/week @ 2024-03-13 476/week @ 2024-03-20 404/week @ 2024-03-27 366/week @ 2024-04-03 300/week @ 2024-04-10 448/week @ 2024-04-17 434/week @ 2024-04-24 359/week @ 2024-05-01 335/week @ 2024-05-08 381/week @ 2024-05-15 436/week @ 2024-05-22 456/week @ 2024-05-29 332/week @ 2024-06-05 284/week @ 2024-06-12 368/week @ 2024-06-19 285/week @ 2024-06-26

1,343 每月下载量

MIT/Apache

55KB
1.5K SLoC

rust-stackvector

文档

发行说明

"StackVec": 堆分配数组的类似向量的门面。

与ArrayVec的比较

ArrayVec 是一个相对成熟的堆向量实现,使用与 stackvector 一样的后端数组。ArrayVec 和 StackVec 之间的主要区别在于与 Vec 的 API 兼容性,以及创建的简便性。

与 Vec 的 API 兼容性

ArrayVec 包含了从 Vec 的 API 中修改的众多内容,实际上需要包装器才能像 Vec 一样使用。在某些情况下,额外的功能是可取的(例如,ArrayVec 有 push,如果容器超出数组的界限会恐慌,try_pushpush_unchecked,而 stackvector 只有一个 push)。在其他情况下,ArrayVec 缺少许多简化与 Vec 一起工作的方法。例如,ArrayVec 缺少

  1. 去重(dedupdedup_bydedup_by_key)。
  2. 插入多个元素(insert_many)(非标准)。

同样,stackvector 也缺少 Vec 中不存在的一些便利方法

  1. 堆分配数组已满(is_full)。
  2. 无需丢弃即可处理(dispose)。

版本支持

ArrayVec 和 stackvector 都支持 Rustc 1.20.0 及更早的版本。

许可

StackVector 是从 Servo 的 smallvec 衍生出来的,就像 smallvec 一样,它可以在 MIT 或 Apache 2.0 许可证下双许可。

版本支持

Stackvector 已经在 Rustc 1.36.0 版本上进行了测试(需要 mem::MaybeUninit)。

依赖项

~30KB