[−][src]Crate smallvec
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
depends on libstd
. However, it can be configured to use the unstable
liballoc
API instead, for use on platforms that have liballoc
but not libstd
. This
configuration is currently unstable and is not guaranteed to work on all versions of Rust.
To depend on smallvec
without libstd
, use default-features = false
in the smallvec
section of Cargo.toml to disable its "std"
feature.
union
feature
When the union
feature is enabled smallvec
will track its state (inline or spilled)
without the use of an enum tag, reducing the size of the smallvec
by one machine word.
This means that there is potentially no space overhead compared to Vec
.
Note that smallvec
can still be larger than Vec
if the inline buffer is larger than two
machine words.
To use this feature add features = ["union"]
in the smallvec
section of Cargo.toml.
Note that this feature requires a nightly compiler (for now).
Macros
smallvec | Creates a [ |
Structs
Drain | An iterator that removes the items from a |
IntoIter | An iterator that consumes a |
SmallVec | A |
Traits
Array | Types that can be used as the backing store for a SmallVec |
ExtendFromSlice | Trait to be implemented by a collection that can be extended from a slice |
VecLike | Deprecated Common operations implemented by both |
Functions
unreachable⚠ | Hint to the optimizer that any code path which calls this function is statically unreachable and can be removed. |