Crate smallvec

source ·
Expand description

Small vectors in various sizes. These store a certain number of elements inline, and fall back to the heap for larger allocations. This can be a useful optimization for improving cache locality and reducing allocator traffic for workloads that fit within the inline buffer.

no_std support

By default, smallvec does not depend on std. However, the optional write feature implements the std::io::Write trait for vectors of u8. When this feature is enabled, smallvec depends on std.

Optional features

serde

When this optional dependency is enabled, SmallVec implements the serde::Serialize and serde::Deserialize traits.

write

When this feature is enabled, SmallVec<u8, _> implements the std::io::Write trait. This feature is not compatible with #![no_std] programs.

specialization

This feature is unstable and requires a nightly build of the Rust toolchain.

When this feature is enabled, SmallVec::from(slice) has improved performance for slices of Copy types. (Without this feature, you can use SmallVec::from_slice to get optimal performance for Copy types.)

Tracking issue: rust-lang/rust#31844

may_dangle

This feature is unstable and requires a nightly build of the Rust toolchain.

This feature makes the Rust compiler less strict about use of vectors that contain borrowed references. For details, see the Rustonomicon.

Tracking issue: rust-lang/rust#34761

Macros

Structs

  • An iterator that removes the items from a SmallVec and yields them by value.
  • An iterator which uses a closure to determine if an element should be removed.
  • An iterator that consumes a SmallVec and yields its items by value.

Enums

Unions

  • Either a stack array with length <= N or a heap array whose pointer and capacity are stored here.