Struct forceps::evictors::FifoEvictor[][src]

pub struct FifoEvictor { /* fields omitted */ }
Expand description

First-in-first-out eviction algorithm for a Cache

This algorithm will evict items in a Cache in the order that they were originally written to the cache, so the first entry will be the first removed. It will stop evicting items when a certain minimum total size is met.

O(?) & Async

This eviction algorithm has no guarantee on being fast or efficient at all. It is expected that this algorithm is called infrequently, only when absolutely needed.

This algorithm also contains blocking calls in an async context, mainly metadata iterations and lookups. The reason for the async context is for the actual removals from cache.

Configuration

Minimum Size

This is the minimum size that the cache must shrink to until the eviction algorithm will stop evicting items.

Batch Size

To create one batch, an entire iteration over the metadata must be performed. However, smaller values means that there is less checking/sorting for each batch found. Higher values should be used if you’re expecting to evict more items at a time.

Examples

use forceps::{Cache, evictors::FifoEvictor};

let cache = Cache::new("./cache")
    .build()
    .await?;
const MIN_SIZE: u64 = 512 * 1024 * 1024; // 512MiB

// Option 1:
cache.evict_with(FifoEvictor::new(MIN_SIZE).set_batch_size(500)).await?;

// Option 2:
use forceps::evictors::Evictor;
FifoEvictor::new(MIN_SIZE).set_batch_size(500).evict(&cache).await?;

Implementations

impl FifoEvictor[src]

pub fn new(min_size: u64) -> Self[src]

Creates a new instance of FifoEvictor that will evict items to min_size bytes.

pub fn set_batch_size(self, size: usize) -> Self[src]

Sets the batch size for the evictor

Larger numbers generally increase performance on larger evictions, but decrease performance on smaller evictions. Read FifoEvictor documentation for more information.

Default is 250

Trait Implementations

impl Clone for FifoEvictor[src]

fn clone(&self) -> FifoEvictor[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for FifoEvictor[src]

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

Formats the value using the given formatter. Read more

impl Evictor for FifoEvictor[src]

type Err = ForcepError

The error type that the evict method will produce.

fn evict<'life0, 'life1, 'async_trait>(
    &'life0 self,
    cache: &'life1 Cache
) -> Pin<Box<dyn Future<Output = Result<(), Self::Err>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

The method that is called to evict old or outdated items from the Cache database. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Pointable for T

pub const ALIGN: usize

The alignment of pointer.

type Init = T

The type for initializers.

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

Initializes a with the given initializer. Read more

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

Dereferences the given pointer. Read more

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

Mutably dereferences the given pointer. Read more

pub unsafe fn drop(ptr: usize)

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

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V