#stack #vec #small-vec #no-std #small #vector

no-std smallvec-stableunion

smallvec 的分支。使用稳定 Rust 中的联合。请注意,它只能存储 Copy 类型。除此之外没有其他功能差异。

1 个不稳定版本

使用旧的 Rust 2015

0.6.10 2019 年 10 月 5 日

#2323 in 数据结构

23 每月下载量
plain-map 中使用

MIT/Apache

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