Skip to main content

DiskBoundedCache

Struct DiskBoundedCache 

Source
pub struct DiskBoundedCache { /* private fields */ }
Expand description

A disk-space-bounded LRU proxy cache that automatically evicts entries when the configured space limit would be exceeded.

Unlike the simpler ProxyCache, DiskBoundedCache:

  • Enforces a hard disk-space ceiling on insertions.
  • Uses LRU eviction automatically upon every insertion that would violate the limit.
  • Maintains hit/miss/eviction counters for telemetry.
  • Supports lookup with automatic LRU touch.

Implementations§

Source§

impl DiskBoundedCache

Source

pub fn new(max_bytes: u64) -> Result<Self, String>

Create a new cache with a disk-space limit of max_bytes.

§Errors

Returns a descriptive string if max_bytes is zero.

Source

pub fn insert(&mut self, path: &str, size_bytes: u64, now_ms: u64) -> bool

Insert a proxy entry identified by path with size_bytes and access time now_ms.

If an entry with the same path already exists it is updated in-place (moved to the MRU end). Before inserting, LRU entries are evicted until the new entry fits within the space limit. If the single entry itself is larger than the limit, the insert is rejected and false is returned.

Returns true when the entry was inserted/updated, false when it was rejected.

Source

pub fn access(&mut self, path: &str, now_ms: u64) -> Option<CacheEntry>

Look up a cache entry by path.

On hit: moves the entry to the MRU position and updates access time. On miss: increments the miss counter.

Returns a clone of the entry on hit, or None on miss.

Source

pub fn evict_lru(&mut self) -> Option<String>

Remove and return the path of the least-recently-used entry.

Returns None if the cache is empty.

Source

pub fn clear(&mut self) -> Vec<String>

Remove all entries, returning their paths.

Source

pub fn contains(&self, path: &str) -> bool

Whether the cache contains an entry for path.

Source

pub fn len(&self) -> usize

Number of entries in the cache.

Source

pub fn is_empty(&self) -> bool

Whether the cache is empty.

Source

pub fn used_bytes(&self) -> u64

Current total used bytes.

Source

pub fn max_bytes(&self) -> u64

Maximum allowed bytes.

Source

pub fn utilization(&self) -> f64

Cache utilisation fraction in [0.0, 1.0].

Source

pub fn stats(&self) -> DiskCacheStats

Collect and return a statistics snapshot.

Trait Implementations§

Source§

impl Debug for DiskBoundedCache

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more