Expand description
§Flexible Array
The flex_array
crate provides a #[no_std]
flexible array similar to std::Vec
, but with
greater control over memory usage. It allows customization of the types used for length,
capacity, and indexing operations, making it more efficient in certain use cases.
§Why Use FlexArr
?
I wrote FlexArr
to address some limitations of Rust’s standard std::Vec
:
-
Reduced Memory Overhead: The
std::Vec
on a 64-bit system typically uses 24 bytes. By specifying a smaller type for length and capacity (e.g.,u32
),FlexArr
can reduce this to just 16 bytes, helping one optimizing memory usage. -
Fallible Allocations: Instead of panicking on allocation failure,
FlexArr
returns an error, allowing for more robust or graceful error handling. Whilestd::Vec
has some fallible methods, most are still unstable. -
Custom Allocator Support: Since Rust’s allocator API is unstable,
FlexArr
introduces theAltAllocator
trait as an alternative to the standardAllocator
trait. If the the allocator API is stabilized, this will basically just become an an alias forAllocator
.
§Feature Flags
-
std_alloc
– Enables a wrapper calledGlobal
that implementsAltAllocator
using the standard allocator APIs. -
alloc_unstable
– Enables support for Rust’s unstableAllocator
trait for custom allocators. When used withstd_alloc
, this re-exports theGlobal
type fromstd
instead of the custom wrapper namedGlobal
. -
alloc_api2
Enables support for theallocator-api2
crate, which also provides anAllocator
trait in stable rust. This way if you already have allocators written against this you can use them with theflex_array
crate. Note: This feature should not be enabled withalloc_unstable
feature. If you want to use both just able to enablealloc_unstable
andnightly
in theallocator-api2
crate. Additionally, if you are using thenightly
feature of theallocator-api2
crate you will need to enable thealloc_unstable
feature.
Modules§
- alloc
- Contains mainly allocator types and traits used by
FlexArr
The most important being theAltAllocator
trait, and theAllocError
type. - types
- Contains types that are use by
FlexArr
The important types are theLengthType
andFlexArrErr
.
Structs§
- FlexArr
FlexArr
is a dynamic array that addresses some of the limitations of Rust’s standardVec
.