A high-performance, concurrent, content-addressable disk cache for Rust with first-class async support.
cacache-rs is a disk caching library for Rust that stores data using content-addressable keys (like SHA hashes), enabling automatic deduplication and integrity verification. It provides high-performance, concurrent access with first-class async support, solving the need for reliable local caching in tools like package managers and build systems.
Rust developers building tools that require efficient, fault-tolerant disk caching, such as package managers (e.g., Cargo plugins), build systems, or applications handling large volumes of immutable data.
Developers choose cacache-rs for its battle-tested design, async-first architecture, and strong consistency guarantees—offering a robust, lockless cache with subresource integrity support and excellent error messages, directly ported from the popular JavaScript cacache library.
A high-performance, concurrent, content-addressable disk cache, with support for both sync and async APIs. 💩💵 but for your 🦀
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
First-class async support with compatibility for async-std or tokio runtimes, enabling high-performance, non-blocking operations ideal for concurrent applications.
Implements content-addressable storage with subresource integrity and multi-hash support, ensuring automatic deduplication and secure data validation using cryptographic hashes.
Immune to corruption and partial writes, with consistency guarantees on all operations, providing reliability even in crash scenarios.
Integrates with miette for detailed, contextual error messages and helpful reporting, improving debugging and developer experience.
Lacks automatic cache eviction policies like TTL, requiring manual management of cache size and cleanup, which can be cumbersome for dynamic data.
Requires feature toggling for different async runtimes (async-std vs. tokio), adding configuration overhead and potential bloat for sync-only use.
While sync APIs are available, the library is optimized for async usage, which might not align well with sync-heavy codebases or simpler projects.