2 releases
0.9.3 | Jan 21, 2020 |
---|---|
0.9.2 | Jan 14, 2020 |
0.9.1 |
|
0.9.0 |
|
#566 in Memory management
9KB
126 lines
The boxing-arena
crate provides a very simply reuse of Box
allocation by
keeping a vector of reusable Box
allocations that can be used when wanting to
wrap a value in Box
.
It would be sometimes easier to introduce boxing-arena
in code bases where
Box
is already used extensively than to use some other arena crate that
affects type and life-time semantics more drastically.
Basic usage demonstration:
// Prepare a long-lived arena:
let mut ba = BoxingArena::new();
// ... per allocation ... :
// Instead of using `Box::new` directly, we do:
let boxed_big_value = ba.rebox(big_value);
// Instead of letting Rust drop and deallocate the Box, we do:
ba.unbox(boxed_big_value);
lib.rs
:
The boxing-arena
crate provides a very simply reuse of Box
allocation by
keeping a vector of reusable Box
allocations that can be used when wanting to
wrap a value in Box
.
It would be sometimes easier to introduce boxing-arena
in code bases where
Box
is already used extensively than to use some other arena crate that
affects type and life-time semantics more drastically.
Basic usage demonstration:
use boxing_arena::BoxingArena;
// Prepare a long-lived arena:
let mut ba = BoxingArena::new();
// ... per allocation ... :
let big_value = [0u8; 0x1000];
// Instead of using `Box::new` directly, we do:
let boxed_big_value = ba.rebox(big_value);
// NOTE: Type of boxed_big_value is Box<[0u8; 0x1000]>
// Instead of letting Rust drop and deallocate the Box, we do:
ba.unbox(boxed_big_value);