wordvec 0.0.0

A compact `SmallVec<T>`-like container with only `align_of::<T>()` overhead for small stack-only instances.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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.