Crate minivec[−][src]
A space-optimized version of alloc::vec::Vec
that's only the size of a single pointer!
Ideal for low-level APIs where ABI calling conventions will typically require most structs be
spilled onto the stack and copied instead of being passed solely in registers.
For example, in the x64 msvc ABI:
There's a strict one-to-one correspondence between a function call's arguments and the registers used for those arguments. Any argument that doesn't fit in 8 bytes, or isn't 1, 2, 4, or 8 bytes, must be passed by reference. A single argument is never spread across multiple registers.
In addition, its single word size makes it ideal for use as a struct member where multiple
inclusions of Vec
as a field can balloon the size.
In general, MiniVec
aims to be API compatible with what's currently stable in the stdlib so some
Nightly features are not supported. MiniVec
also supports myriad extensions, one such being
support for over-alignment via the associated function with_alignment
.
MiniVec
has stable implementations of the following nightly-only associated functions on Vec
:
MiniVec
has the following associated functions not found in Vec
:
Eventual TODO's:
- add
try_reserve
methods once stable - add myriad specializations to associated functions such as
FromIterator
once stable - add Allocator support once stable
Macros
mini_vec |
|
Structs
Drain | |
DrainFilter | |
IntoIter | |
MiniVec | |
Splice |
Enums
LayoutErr |