Skip to main content

CacheKey

Struct CacheKey 

Source
pub struct CacheKey {
    pub user_tag: String,
    pub extensions: Extensions,
    /* private fields */
}
Expand description

General purpose cache key.

The primary hash is computed over the exact bytes supplied to CacheKey::new. Callers that combine multiple logical components, such as a namespace and URL, must encode their boundaries unambiguously before constructing the key.

§Migration

The former namespace argument has been removed. Concatenating the old namespace and primary bytes preserves the legacy hash, but also preserves its ambiguous component boundaries. Switching to an unambiguous encoding changes hashes for keys with a non-empty namespace, so callers should expect a cold cache.

Fields§

§user_tag: String

An extra tag for identifying users

For example, if the storage backend implements per user quota, this tag can be used.

§extensions: Extensions

Grab-bag for user-defined extensions. These will not be persisted to disk.

Implementations§

Source§

impl CacheKey

Source

pub fn set_variance_key(&mut self, key: HashBinary)

Set the value of the variance hash

Source

pub fn get_variance_key(&self) -> Option<&HashBinary>

Get the value of the variance hash

Source

pub fn remove_variance_key(&mut self)

Removes the variance from this cache key

Source

pub fn set_primary_bin_override(&mut self, key: HashBinary)

Override the primary key hash

Source

pub fn primary_key_str(&self) -> Option<&str>

Try to get primary key as UTF-8 str, if valid

Source§

impl CacheKey

Source

pub fn new<B, S>(primary: B, user_tag: S) -> Self
where B: Into<Vec<u8>>, S: Into<String>,

Create a new CacheKey from the given primary key and user_tag.

Only the primary key will be hashed to produce the primary cache hash. If the primary contains multiple logical components, callers must frame them unambiguously, for example by length-prefixing each component.

Source

pub fn primary_key(&self) -> &[u8]

Return the primary key of this key

Source

pub fn to_compact(&self) -> CompactCacheKey

Convert this key to CompactCacheKey.

Trait Implementations§

Source§

impl CacheHashKey for CacheKey

Source§

fn primary_bin(&self) -> HashBinary

Return the hash of the cache key
Source§

fn variance_bin(&self) -> Option<HashBinary>

Return the variance hash of the cache key. Read more
Source§

fn user_tag(&self) -> &str

An extra tag for identifying users Read more
Source§

fn combined_bin(&self) -> HashBinary

Return the hash including both primary and variance keys
Source§

fn primary(&self) -> String

The hex string of Self::primary_bin()
Source§

fn variance(&self) -> Option<String>

The hex string of Self::variance_bin()
Source§

fn combined(&self) -> String

The hex string of Self::combined_bin()
Source§

impl Clone for CacheKey

Source§

fn clone(&self) -> CacheKey

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CacheKey

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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