High-performance cache policies and supporting data structures.
Spec maturity: reference
Executable oracle:
tests/abstract_models/exact/lifo.rs(LifoModel); independent reference:reference/lifo.rs(NaiveLifoModel).
Last-In-First-Out cache replacement: evict the most recently inserted key (top of stack) when space is needed.
| Variable | Type | Meaning |
|---|---|---|
stack |
Seq<K> |
Back = newest (MRU of stack); all keys resident |
capacity |
usize |
Maximum resident count |
stack = ⟨⟩capacity = C| Observable | Definition |
|---|---|
resident |
Keys in stack |
peek_victim |
Back of stack (newest), or none if empty |
hit |
MustHit / MustMiss from membership |
Insert(k)k ∈ resident: no structural change (value update only).capacity = 0: no-op.|resident| ≥ capacity: evict back of stack (newest), record evicted_on_insert.k onto back of stack.Get(k) / Peek(k) / GetMut(k)hit from membership. No promotion or stack reorder.Touch(k)hit = MayHitOrMiss.Remove(k)k from stack if present.EvictOnevictim = Exact(back), pop back.Op mappingOp |
Cache API | Side effects |
|---|---|---|
Insert(k) |
insert(k, v) |
May evict newest |
Get(k) |
get(k) |
None |
Peek(k) |
peek(k) |
None |
GetMut(k) |
— | No-op in adapter |
Touch(k) |
— | No-op in adapter |
Remove(k) |
remove(k) |
Remove from stack |
EvictOne |
evict_one() |
Evict newest |