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
- Error type for APIs with fallible heap allocation
Unions
- Either a stack array with
length <= N
or a heap array whose pointer and capacity are stored here.