Struct KeyPointerCache

Source
pub struct KeyPointerCache<const PAGE_COUNT: usize, KEY: Key, const KEYS: usize> { /* 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<const PAGE_COUNT: usize, KEY: Key, const KEYS: usize> KeyPointerCache<PAGE_COUNT, KEY, KEYS>

Source

pub const fn new() -> Self

Construct a new instance

Trait Implementations§

Source§

impl<const PAGE_COUNT: usize, KEY: Debug + Key, const KEYS: usize> Debug for KeyPointerCache<PAGE_COUNT, KEY, KEYS>

Source§

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

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

impl<const PAGE_COUNT: usize, KEY: Key, const KEYS: usize> Default for KeyPointerCache<PAGE_COUNT, KEY, KEYS>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<const PAGE_COUNT: usize, KEY: Key, const KEYS: usize> CacheImpl for KeyPointerCache<PAGE_COUNT, KEY, KEYS>

Source§

impl<const PAGE_COUNT: usize, KEY: Key, const KEYS: usize> KeyCacheImpl<KEY> for KeyPointerCache<PAGE_COUNT, KEY, KEYS>

Auto Trait Implementations§

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> Freeze for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: Freeze,

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> RefUnwindSafe for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: RefUnwindSafe,

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> Send for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: Send,

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> Sync for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: Sync,

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> Unpin for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: Unpin,

§

impl<const PAGE_COUNT: usize, KEY, const KEYS: usize> UnwindSafe for KeyPointerCache<PAGE_COUNT, KEY, KEYS>
where KEY: UnwindSafe,

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.