cacache-rs/src
C J Silverio e34dcfdc25
feature(async): Add tokio as an executor option (#36)
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
2023-01-28 13:01:59 -08:00
..
content feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
async_lib.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
errors.rs feat(errors): remove anyhow and use custom error types (#24) 2020-04-29 19:34:43 -07:00
get.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
index.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
lib.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
ls.rs fix(clippy): appease the paperclip 2021-09-15 19:57:58 -07:00
put.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00
rm.rs feature(async): Add tokio as an executor option (#36) 2023-01-28 13:01:59 -08:00