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
和arrayvec
crate是正确的,但偶尔会出现导致UB的错误。与tinyvec
相比,任何未捕获的错误都不会导致UB,因为该crate从头到尾都是安全代码。如果您想要绝对避免UB的保证,请使用tinyvec
。
依赖项
~195KB