Go to file
Taiki Endo abd6fc29f7 Migrate CI to GitHub Actions 2021-03-20 16:21:49 +09:00
.github/workflows Migrate CI to GitHub Actions 2021-03-20 16:21:49 +09:00
examples Bump to 0.5.0, delete unsafe, use 2018 edition 2020-07-07 09:35:12 +02:00
src no_std support 2021-03-14 22:22:15 -07:00
tests Bump to 0.5.0, delete unsafe, use 2018 edition 2020-07-07 09:35:12 +02:00
.gitignore
Cargo.toml Remove readme field from Cargo.toml 2021-02-14 19:45:00 +09:00
LICENSE-APACHE Change to dual Apache-2.0/MIT 2016-10-25 18:54:42 +02:00
LICENSE-MIT Change to dual Apache-2.0/MIT 2016-10-25 18:54:42 +02:00
README.md Update license badge to match Cargo.toml 2021-02-14 13:36:40 +09:00

README.md

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>: