🗑 async-dropper-simple

`async-dropper` is probably the least-worst ad-hoc `AsyncDrop` implementation you've seen, and it works in two ways: - `async_dropper::simple` is stolen nearly verbatim from [this StackOverflow answer](https://stackoverflow.com/a/75584109) (thanks to [`paholg`](https://stackoverflow.com/users/2977291/paholg)!) - `async_dropper::derive` provides a trait called `AsyncDrop` and corresponding [derive macro][rust-derive-macro], which try to use `Default` and `PartialEq` to determine when to async drop. The code in this crate powers `async_dropper::simple`. See the `async_dropper` crate for more details. ## Feature flags | Flag | Description | |--------------------|---------------------------------------------------------------------------------------| | `tokio` | Use the [`tokio`][tokio] async runtime | | `async-std` | use the [`async-std`][async-std] async runtime | | `no-default-bound` | Avoid the `Default` bound on your `T` by wrapping the interior data in an `Option` |