Expand description
Create temporary Vecs of references without allocating/deallocating (useful for realtime code). This crate is implemented without any unsafe code, and can be used without the standard library (#![no_std]).
Note, if the maximum capacity is known at compile time and is small enough to
fit on the stack, then the same effect can be more easily achieved using
arrayvec instead.
§Example
// Contruct the object to hold the allocation. Here we specify
// we want the data type to be slices of `f32` values.
//
// This object can be stored as a field in a struct for later use.
let capacity = 100;
let mut v_alloc: PreallocRefVec<[f32]> = PreallocRefVec::new(capacity);
// ...
let slice_1: [f32; 4] = [0.0; 4];
let slice_2: [f32; 4] = [0.0; 4];
// Temporarily use the allocation to construct a Vec<&T>
// (Vec<&[f32]> in this case)
let mut tmp_vec = v_alloc.get_tmp();
// The temporary vec is always cleared when created.
assert_eq!(tmp_vec.len(), 0);
// The temporary vec uses the internal allocation.
assert!(tmp_vec.capacity() >= capacity);
tmp_vec.push(&slice_1);
tmp_vec.push(&slice_2);
// Dropping the temporary vec returns the allocation to be used again.
drop(tmp_vec);
// ...
// Alternatively, a closure can be used to construct a temporary vec:
v_alloc.with_tmp(|tmp_vec| {
assert_eq!(tmp_vec.len(), 0);
assert!(tmp_vec.capacity() >= capacity);
tmp_vec.push(&slice_1);
tmp_vec.push(&slice_2);
});Structs§
- Prealloc
RefVec - A struct that is used to create a temporary
Vecof references/unsized data without allocating/deallocating. Useful for realtime code. - TmpRef
MutVec - A temporary
Vecof mutable references/unsized data created using aPreallocRefVec. Useful for realtime code. - TmpRef
Vec - A temporary
Vecof immutable references/unsized data created using aPreallocRefVec. Useful for realtime code.