1 个不稳定版本
使用旧的 Rust 2015
0.6.10 | 2019 年 10 月 5 日 |
---|
#2323 in 数据结构
23 每月下载量
在 plain-map 中使用
68KB
1.5K SLoC
rust-smallvec
Rust 的“小向量”优化:在栈上存储少量项目
lib.rs
:
不同大小的中小向量。这些向量将一定数量的元素直接存储在行内,并在需要更大分配时回退到堆。这对于适合行内缓冲区的工作负载来说,可以是一个有用的优化,以提高缓存局部性和减少分配器流量。
无 std 支持
默认情况下,smallvec
依赖于 libstd
。但是,它可以配置为使用不稳定的 liballoc
API,以便在具有 liballoc
但没有 libstd
的平台上使用。此配置目前是不稳定的,并且不能保证在所有 Rust 版本上都能工作。
要依赖 smallvec
而不使用 libstd
,请在 Cargo.toml 的 smallvec
部分中使用 default-features = false
来禁用其 "std"
功能。
union
功能
当启用 union
功能时,smallvec
将跟踪其状态(内联或溢出)而不使用枚举标记,从而将 smallvec
的大小减少一个机器字。这意味着与 Vec
相比,可能没有空间开销。请注意,如果内联缓冲区大于两个机器字,smallvec
仍然可能比 Vec
更大。
要使用此功能,请在 Cargo.toml 的 smallvec
部分添加 features = ["union"]
。请注意,此功能需要夜间编译器(目前如此)。
依赖项
~175KB