Struct LruReplacer

Source
pub struct LruReplacer<F: FrameId> { /* private fields */ }
Expand description

Least Recently Used (LRU) frame replacer.

This implementation uses a priority queue to manage the frames. The priority queue is ordered by the last access time of the frames. The most recently accessed frame is pushed to the back of the queue, while the least recently accessed item is the first to be evicted.

Implementations§

Source§

impl<F: FrameId> LruReplacer<F>

Source

pub fn new(capacity: usize) -> Self

Creates a new LRU replacer.

Trait Implementations§

Source§

impl<F: FrameId> EvictionPolicy<F> for LruReplacer<F>

Source§

type Error = EvictError<F>

Error type for the eviction policy.
Source§

fn evict(&self) -> Option<F>

Find the next frame to be evicted and evict it. Read more
Source§

fn peek(&self) -> Option<F>

Peek into the next frame to be evicted. Read more
Source§

fn touch(&self, id: F) -> EvictResult<(), F>

Notifies the policy manager that a page controlled by the frame has been referenced/accessed. Read more
Source§

fn touch_with<T: AccessType>( &self, id: F, _access_type: T, ) -> EvictResult<(), F>

Notifies the policy manager that a page controlled by the frame has been referenced/accessed. In addition to mere occurrence of access, this method also logs the type of the access.
Source§

fn pin(&self, id: F) -> EvictResult<(), F>

Pin a frame, marking it as non-evictable. Read more
Source§

fn unpin(&self, id: F) -> EvictResult<(), F>

Unpin a frame, marking it as evictable. Read more
Source§

fn remove(&self, id: F) -> EvictResult<(), F>

Removes an evictable frame. Read more
Source§

fn capacity(&self) -> usize

Returns the maximum number of frames that can be stored.
Source§

fn size(&self) -> usize

The number of elements that can be evicted. Essentially, this is the number of non-pinned frames.

Auto Trait Implementations§

§

impl<F> Freeze for LruReplacer<F>

§

impl<F> !RefUnwindSafe for LruReplacer<F>

§

impl<F> Send for LruReplacer<F>
where F: Send + Sync,

§

impl<F> Sync for LruReplacer<F>
where F: Send + Sync,

§

impl<F> Unpin for LruReplacer<F>

§

impl<F> !UnwindSafe for LruReplacer<F>

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, 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, 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.