2 releases
Uses new Rust 2024
new 0.0.1 | May 16, 2025 |
---|---|
0.0.0 | May 12, 2025 |
#86 in #assertions
97 downloads per month
36KB
635 lines
wordvec
A compact SmallVec<T>
-like container with only align_of::<T>()
overhead for small stack-only instances.
WordVec<T, N>
stores the length and capacity of a container on the heap.
Thus, the heap pointer is always aligned to 2 bytes on most targets,
i.e. the least significant bit is always zero.
WordVec<T, N>
exploits this knowledge to represent small (stack-only) vecs
by storing the length as 1 | (length << 1)
in the first byte (for little-endian targets),
using the least significant bit to distinguish whether it is a heap pointer or a stack length.
(As a consequence, N
must not exceed 127, which is checked by a const assertion)
Supported platforms
Targets not meeting the following platform requirements will lead to compile error:
- Little-endian only
align_of::<usize>()
must be at least 2 bytes.