11 releases (1 stable)

1.0.0 Sep 7, 2020
0.5.2 Aug 20, 2020
0.5.0 Jul 7, 2020
0.4.2 Aug 11, 2017
0.1.1 Nov 14, 2016

#13 in Memory management

Download history 22/week @ 2020-06-01 3/week @ 2020-06-08 8/week @ 2020-06-15 1/week @ 2020-06-22 7/week @ 2020-06-29 37/week @ 2020-07-06 592/week @ 2020-07-13 2115/week @ 2020-07-20 2643/week @ 2020-07-27 3057/week @ 2020-08-03 9600/week @ 2020-08-10 21274/week @ 2020-08-17 23962/week @ 2020-08-24 20220/week @ 2020-08-31 25665/week @ 2020-09-07 33491/week @ 2020-09-14

28,604 downloads per month
Used in 637 crates (3 directly)

Apache-2.0 OR MIT

22KB
297 lines

vec-arena

Build Status License Cargo Documentation

What is this?

A simple object arena.

You want to build a doubly linked list? Or maybe a bidirectional tree? Perhaps an even more complicated object graph?

Managing ownership and lifetimes might be tough then. Your options boil down to:

  1. Use unsafe code to escape Rust's ownership rules.
  2. Wrap every object in Rc<RefCell<T>>.
  3. Use Vec<T> to store objects, then access them using indices.

If the last option seems most appealing to you, perhaps Arena<T> is for you. It will provide a more convenient API than a plain Vec<T>.

Examples

Some data structures built using Arena<T>:

No runtime deps