A high-performance, concurrent, content-addressable disk cache, optimized for async APIs.
```rust use cacache; use async_attributes;
async fn main() -> Result<(), cacache::Error> { let dir = String::from("./my-cache");
// Write some data!
cacache::write(&dir, "key", b"my-async-data").await?;
// Get the data back!
let data = cacache::read(&dir, "key").await?;
assert_eq!(data, b"my-async-data");
// Clean up the data!
cacache::rm::all(&dir).await?;
} ```
Using cargo-edit
$ cargo add cacache
async-std
as its runtime. Sync APIs are available but secondarystd::fs
-style APIThe cacache team enthusiastically welcomes contributions and project participation! There's a bunch of things you can do if you want to contribute! The Contributor Guide has all the information you need for everything from reporting bugs to contributing entire new features. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear.
All participants and maintainers in this project are expected to follow Code of Conduct, and just generally be excellent to each other.
Happy hacking!
This project is licensed under the Parity License. Third-party contributions are licensed under Apache-2.0 and belong to their respective authors.
The Parity License is a copyleft license that, unlike the GPL family, allows you to license derivative and connected works under permissive licenses like MIT or Apache-2.0. It's free to use provided the work you do is freely available!
For proprietary use, please contact me, or just sponsor me on GitHub under the appropriate tier to acquire a proprietary-use license! This funding model helps me make my work sustainable and compensates me for the work it took to write this crate!