Crate pulz_arena[−]
Expand description
pulz-arena
A generational arena allocator inspired by generational-arena with compact generational indices.
When you insert a value into the arena, you get an index-pointer in return. You can then use this index-pointer to access the provided value.
Example
use pulz_arena::{Arena,Index};
let mut arena = Arena::new();
// insert some elements and remember the returned index
let a = arena.insert("foo");
let b = arena.insert("bar");
// access inserted elements by returned index
assert_eq!("bar", arena[b]);
// there are also the "checked" versions `get` and `get_mut` that returns Option.
assert_eq!(Some(&"foo"), arena.get(a));
// items can be removed efficiently
assert_eq!(Some("foo"), arena.remove(a));
assert!(!arena.contains(a));
no_std
This crate should also work without std
. No additional configuration required.
License
This repository is licensed under either of
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Structs
A collection-type with constant insert and remove operations.
A draining iterator for Arena<T>
created by Arena::drain
.
A value type denoting the version or generation of an Index
.
An immutable iterator for Arena<T>
created by Arena::iter
.
An mutable iterator for Arena<T>
created by Arena::iter_mut
.
A Arena
-like collection-type that shares the Indices with an Arena
.