HeapKeyPointerCache

Struct HeapKeyPointerCache 

Source
pub struct HeapKeyPointerCache<KEY: Key> { /* private fields */ }
Expand description

An object that caches the location of the newest item with a given key. This cache also caches pages states and page pointers.

This cache has to be kept around and passed to every api call to the same memory region until the cache gets discarded.

Valid usecase:
Create cache 1 -> use 1 -> use 1 -> create cache 2 -> use 2 -> use 2

Invalid usecase:
Create cache 1 -> use 1 -> create cache 2 -> use 2 -> ❌ use 1 ❌

Make sure the page count is correct. If the number is lower than the actual amount, the code will panic at some point.

The number of key slots can be lower than the total amount of possible keys used, but this will lower the chance of a cache hit. The keys are cached in a fifo and any time its location is updated in cache it’s added to the front.

Implementations§

Source§

impl<KEY: Key> HeapKeyPointerCache<KEY>

Source

pub fn new(pages: usize, keys: usize) -> Self

Construct a new instance

Trait Implementations§

Source§

impl<KEY: Debug + Key> Debug for HeapKeyPointerCache<KEY>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<KEY: Key> CacheImpl for HeapKeyPointerCache<KEY>

Source§

impl<KEY: Key> KeyCacheImpl<KEY> for HeapKeyPointerCache<KEY>

Auto Trait Implementations§

§

impl<KEY> Freeze for HeapKeyPointerCache<KEY>

§

impl<KEY> RefUnwindSafe for HeapKeyPointerCache<KEY>
where KEY: RefUnwindSafe,

§

impl<KEY> Send for HeapKeyPointerCache<KEY>
where KEY: Send,

§

impl<KEY> Sync for HeapKeyPointerCache<KEY>
where KEY: Sync,

§

impl<KEY> Unpin for HeapKeyPointerCache<KEY>
where KEY: Unpin,

§

impl<KEY> UnwindSafe for HeapKeyPointerCache<KEY>
where KEY: UnwindSafe,

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.