| Crates.io | associative-cache |
| lib.rs | associative-cache |
| version | 2.0.0 |
| created_at | 2019-09-18 23:48:27.257473+00 |
| updated_at | 2023-05-11 18:19:09.688109+00 |
| description | A generic N-way associative cache with fixed-size capacity and random or least recently used (LRU) replacement. |
| homepage | |
| repository | https://github.com/fitzgen/associative-cache |
| max_upload_size | |
| id | 165827 |
| size | 67,372 |
associative_cacheA generic, fixed-size, associative cache data structure mapping K keys to
V values.
The cache has a constant, fixed-size capacity which is controlled by the C
type parameter and the Capacity trait. The memory for the cache entries is
eagerly allocated once and never resized.
The cache can be configured as direct-mapped, two-way associative, four-way
associative, etc... via the I type parameter and Indices trait.
The cache can be configured to replace the least recently used (LRU) entry, or a
random entry via the R type parameter and the Replacement trait.
use associative_cache::*;
// A two-way associative cache with random replacement mapping
// `String`s to `usize`s.
let cache = AssociativeCache::<
String,
usize,
Capacity512,
HashTwoWay,
RandomReplacement
>::default();
// A four-way associative cache with random replacement mapping
// `*mut usize`s to `Vec<u8>`s.
let cache = AssociativeCache::<
*mut usize,
Vec<u8>,
Capacity32,
PointerFourWay,
RandomReplacement
>::default();
// An eight-way associative, least recently used (LRU) cache mapping
// `std::path::PathBuf`s to `std::fs::File`s.
let cache = AssociativeCache::<
std::path::PathBuf,
WithLruTimestamp<std::fs::File>,
Capacity128,
HashEightWay,
LruReplacement,
>::default();