HeapArray
This crate aims to give people better control of how they want to allocate memory, by providing a customizable way to allocate blocks of memory, that optionally contains metadata about the block itself.
It's suggested that you import the contents of this crate with use heaparray::*;
, as a lot of the functionality of the structs in this crate are
implemented through traits.
Features
- Arrays are allocated on the heap
- Swap owned objects in and out with
array.insert()
Examples
Creating an array:
use *;
let len = 10;
let array = new;
Indexing works as you would expect:
# use *;
# let mut array = new;
array = 2;
assert!;
Notably, you can take ownership of objects back from the container:
# use *;
let mut array = new;
let replacement_object = Vec new;
let owned_object = array.insert;
but you need to give the array a replacement object to fill its slot with.
Additionally, you can customize what information should be stored alongside the elements in the array using the HeapArray::new_labelled function:
# use *;
let mut array = new_labelled;
Future Plans
Iteration, allocator customization, reference counting (RcArray
), and atomic reference counting (ArcArray
).