rodeo 0.1.1

Fast dropping arena based on bumpalo
Documentation
# Rodeo

A dropping arena based on [bumpalo](https://crates.io/crates/bumpalo).

## Example

```rust
use rodeo::Rodeo;

let rodeo = Rodeo::new();

let _ref_n = rodeo.alloc(42);

struct S;
impl Drop for S {
    fn drop(&mut self) {
        println!("dropping S");
    }
}
let _ref = rodeo.alloc(S);

drop(rodeo);
```

prints `dropping S`

## Features

* `bumpalo` (default)

## Safety

As a memory management library, this code uses `unsafe` extensively. However, the code is tested and dynamically verified.

## Verification strategy

### Tests

Some test scenarios are written with [proptest](https://altsysrq.github.io/proptest-book/).

Run the tests simply with:

```shell
$ cargo test
```

### Miri

[Miri](https://github.com/rust-lang/miri) is an interpreter for MIR (an intermediate representation of Rust) that checks Rust code and in particular _unsafe_ code against the experimental Stacked Borrows memory model.

As of `miri 0.1.0 (c1a859b 2022-11-10)`, Rodeo's tests emits no error or warning when run with Miri.

```shell
$ rustup +nightly component add miri # if needed
$ cargo +nightly miri test
```

## To-Do

- [ ] support custom finalizer (opt-in? through another type?)
- [x] add slice allocation (like `Bump` but dropping)

## License

Rodeo is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See [LICENSE-MIT](LICENSE-MIT) and [LICENSE-APACHE](LICENSE-APACHE).