rougenoir 0.1.0

A red-black tree and set with callbacks
Documentation
# Contributing

1. Be nice.
1. Please contact me before:

- you start a big re-write, or
- you want to tackle something from [TODO.md]TODO.md.

1. Please pay attention to the commit message format because the changelog is automatically generated:

- **Don't use** [conventional commits]https://www.conventionalcommits.org/en/v1.0.0/.
- The format is close enough:

  ```
  <type>: [optional scope]: <description>

  [optional body]
  ```

- `fix: tree: change rotation API`.
- Examples and descriptions are highly encouraged in the commit body.

## Dependencies

1. [`cargo-nextest`]https://nexte.st/, to run the tests.
1. [`just`]https://just.systems/man/en/, to run common tasks.
1. [`miri`]https://github.com/rust-lang/miri, for memory safety analysis.
1. [`rust nightly`]https://rust-lang.github.io/rustup/concepts/channels.html, to run `miri`.
1. [`typos-cli`]https://github.com/crate-ci/typos, for spell checking.

### Installation Procedure

All you need to install manually is `just` and `rust nightly`.
Check their docs and pick what suits your setup best.
If you're feeling especially lazy today, you can always install them with `cargo` and `rustup`:

```sh
cargo install just
rustup toolchain install nightly
```

Once done, you can setup the project and you're ready to go:

```sh
just setup # Pulls cargo-nextest, typos-cli, and miri
```

## Rules

The CI should pass the pipeline:

```sh
just lint && just miri # miri will download automatically.
```

## Helpers

Automatically fix with clippy if the working dir is _clean_:

```sh
just clippy-fix
```

Automatically fix with clippy if the working dir is _dirty_:

```sh
just clippy-fix-now
```