pub struct QuickCacheBackend { /* private fields */ }Implementations§
Source§impl QuickCacheBackend
impl QuickCacheBackend
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Create a backend holding up to capacity bytes of weighted entries
(weight = key footprint + declared size), sharded per
recommended_cache_shards.
Sourcepub fn with_shard_policy(
capacity: usize,
shard_policy: QuickCacheShardPolicy,
) -> Self
pub fn with_shard_policy( capacity: usize, shard_policy: QuickCacheShardPolicy, ) -> Self
Create a weighted cache with an explicit shard policy.
capacity bounds the sum of key footprints and declared entry sizes.
Each shard has an independent share of that bound. In addition, the
default Quick admission policy rejects an unpinned entry heavier than
approximately 97% of one shard’s share.
§Example
use lance_core::cache::{QuickCacheBackend, QuickCacheShardPolicy};
let cache = QuickCacheBackend::with_shard_policy(
8 << 30,
QuickCacheShardPolicy::Single,
);Trait Implementations§
Source§impl CacheBackend for QuickCacheBackend
impl CacheBackend for QuickCacheBackend
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = Option<CacheEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = Option<CacheEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Look up an entry by its key. Read more
Source§fn insert<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
entry: CacheEntry,
size_bytes: usize,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn insert<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
entry: CacheEntry,
size_bytes: usize,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Store an entry.
size_bytes is used for eviction accounting. Read moreSource§fn get_or_insert<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
loader: Pin<Box<dyn Future<Output = Result<(CacheEntry, usize)>> + Send + 'a>>,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = Result<(CacheEntry, bool)>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_or_insert<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 InternalCacheKey,
loader: Pin<Box<dyn Future<Output = Result<(CacheEntry, usize)>> + Send + 'a>>,
_codec: Option<CacheCodec>,
) -> Pin<Box<dyn Future<Output = Result<(CacheEntry, bool)>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get an existing entry or compute it from
loader. Read moreSource§fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Remove all entries.
Source§fn num_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn num_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Number of entries currently stored (may flush pending operations).
Source§fn size_bytes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn size_bytes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Total weighted size in bytes of all stored entries (may flush pending operations).
Source§fn capacity_bytes(&self) -> Option<usize>
fn capacity_bytes(&self) -> Option<usize>
Weighted capacity in bytes, or
None when the backend has no fixed
capacity or cannot report it. Lets callers skip loading entries that
could never be retained.Source§fn approx_num_entries(&self) -> usize
fn approx_num_entries(&self) -> usize
Approximate number of entries, callable from synchronous contexts.
Backends that cannot provide this cheaply should return 0.
Source§fn approx_size_bytes(&self) -> usize
fn approx_size_bytes(&self) -> usize
Approximate weighted size in bytes, callable from synchronous contexts.
Used as a
DeepSizeOf fallback when exact entry traversal is unavailable.
Backends that cannot provide this cheaply should return 0. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for QuickCacheBackend
impl !UnwindSafe for QuickCacheBackend
impl Freeze for QuickCacheBackend
impl Send for QuickCacheBackend
impl Sync for QuickCacheBackend
impl Unpin for QuickCacheBackend
impl UnsafeUnpin for QuickCacheBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more