Struct FusionCache

Source
pub struct FusionCache<TKey: Hash + Eq + Send + Sync + Clone + Serialize + DeserializeOwned + 'static, TValue: Clone + Send + Sync + Serialize + DeserializeOwned + 'static> { /* private fields */ }
Expand description

The main struct of the fusioncache-rs library.

This struct is used to create a cache that can be used to store and retrieve values.

Implementations§

Source§

impl<TKey: Hash + Eq + Send + Sync + Clone + Serialize + DeserializeOwned + Debug + 'static, TValue: Clone + Send + Sync + Serialize + DeserializeOwned + Debug + 'static> FusionCache<TKey, TValue>

Source

pub async fn get_or_set<TError: Clone + Send + Sync + Display + 'static, F: Factory<TKey, TValue, TError>>( &mut self, key: TKey, factory: F, options: Option<FusionCacheOptions>, ) -> Result<TValue, FusionCacheError>

Retrieves a value from the cache, or generates it using the provided factory if not found. If the distributed cache is enabled, the value will be retrieved and written to the distributed cache as well.

This method implements a sophisticated cache stampede protection mechanism:

  • If the value exists in cache, returns it immediately
  • If the value is being generated by another request, waits for and returns that result
  • If no request is in flight, generates the value using the factory
§Arguments
  • key - The key to look up in the cache
  • factory - The factory to use for generating the value if not found
  • options - The options to use for this specifc entry. If not provided, the default options will be used.
§Returns
  • Ok(TValue) - The cached or newly generated value
  • Err(FusionCacheError) - If value generation failed or timed out
Source

pub async fn get(&mut self, key: TKey) -> Option<TValue>

Retrieves a value from the cache without invoking the factory.

§Arguments
  • key - The key to look up in the cache
§Returns
  • Some(TValue) - The cached value if it exists
  • None - If the value is not in the cache
Source

pub async fn set( &mut self, key: TKey, value: TValue, options: Option<FusionCacheOptions>, )

Directly sets a value in the cache.

§Arguments
  • key - The key under which to store the value
  • value - The value to store
  • options - The options to use for this specifc entry. If not provided, the default options will be used.
Source

pub async fn evict(&mut self, key: TKey)

Removes a value from the cache.

§Arguments
  • key - The key to remove from the cache

Trait Implementations§

Source§

impl<TKey: Clone + Hash + Eq + Send + Sync + Clone + Serialize + DeserializeOwned + 'static, TValue: Clone + Clone + Send + Sync + Serialize + DeserializeOwned + 'static> Clone for FusionCache<TKey, TValue>

Source§

fn clone(&self) -> FusionCache<TKey, TValue>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<TKey: Debug + Hash + Eq + Send + Sync + Clone + Serialize + DeserializeOwned + 'static, TValue: Debug + Clone + Send + Sync + Serialize + DeserializeOwned + 'static> Debug for FusionCache<TKey, TValue>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<TKey, TValue> Freeze for FusionCache<TKey, TValue>

§

impl<TKey, TValue> !RefUnwindSafe for FusionCache<TKey, TValue>

§

impl<TKey, TValue> Send for FusionCache<TKey, TValue>

§

impl<TKey, TValue> Sync for FusionCache<TKey, TValue>

§

impl<TKey, TValue> Unpin for FusionCache<TKey, TValue>
where TKey: Unpin, TValue: Unpin,

§

impl<TKey, TValue> !UnwindSafe for FusionCache<TKey, TValue>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,