33 个版本 (14 个稳定)
| 1.8.0 | 2024 年 7 月 8 日 |
|---|---|
| 1.6.1 | 2024 年 6 月 25 日 |
| 1.6.0 | 2022 年 4 月 25 日 |
| 1.5.1 | 2021 年 11 月 9 日 |
| 0.3.3 | 2020 年 3 月 26 日 |
在 数据结构 中排名 14
每月下载量 9,479,940
在 30,463 个 仓库中(直接使用 138 个)
330KB
13K SLoC
tinyvec
A 100% 安全的类似 vec 的类型库。不仅公共 API 边界安全,所有内部代码也是完全安全的:#![forbid(unsafe_code)]
提供以下类型:
ArrayVec是一个基于数组的类似 vec 的数据结构。在溢出时引发恐慌。SliceVec类似,但使用&mut [T]作为数据支持。TinyVec(alloc功能) 是一个枚举,可以是(ArrayVec)或(Vec)。如果TinyVec是Inline并且数组会溢出,它将自动转换为Heap并继续执行。
为了达到这种 "100% 安全代码" 的状态,有一个妥协:vec 的元素类型必须实现 Default。
有关更多 API 详细信息,请参阅 docs.rs 文档
tinyvec 的替代品?
也许你不想使用 tinyvec,这里有一些你可能想要使用的其他库!
主要区别在于这两个crate都使用了unsafe代码。这主要使它们能够摆脱Default限制,这是tinyvec施加的。通常,smallvec和arrayveccrate是正确的,但偶尔会出现导致UB的错误。与tinyvec相比,任何未捕获的错误都不会导致UB,因为该crate从头到尾都是安全代码。如果您想要绝对避免UB的保证,请使用tinyvec。
依赖项
~195KB