This PR is based on the work @alexschrod did in PR #29. All
I did was carry it over the finish line.
This PR adds a feature to the crate named `tokio-runtime`. If
you disable default features and enable this new one, cacache
uses tokio as its async executor. This makes integrating cacache
with tokio-using projects easier, because the file types leak out
if you use anything more than the top-level convenience functions.
The PR implements the feature using shims in a new submodule named
`async_lib`. This module conditionally uses either async-std
or tokio based on feature selection, and hides some differences with
convenience functions.
This change should not be a breaking change, because the default is
still async-std.
There are a few other small changes in this PR worth noting.
- The README shows how to switch runtimes.
- There's a justfile to run common tasks, including those in makefile.toml.
The default shell is `sh`, so this might not work out of the box for
Windows users.
- The tests can now run under either runtime. The justfile has a recipe
that runs them both.
- The benchmarks can also run under either runtime. The justfile has two
recipe for this, one using bench and the other using criterion's runner.
- The dependencies now pull in async-attributes by default along with
async-std. This made it easier to swap runtimes in the tests.
- All dependency versions have been bumped.
Co-authored-by: @alexschrod