Skip to main content

CachekitConfigBuilder

Struct CachekitConfigBuilder 

Source
pub struct CachekitConfigBuilder { /* private fields */ }
Expand description

Fluent builder for a CachekitConfig value.

The builder validates and holds values. No CacheKit constructor takes the CachekitConfig it builds, so nothing set here (keys, namespace, TTL, capacity) reaches a client. To configure a client, use CacheKit::builder() or CacheKit::from_env().

Implementations§

Source§

impl CachekitConfigBuilder

Source

pub fn new() -> Self

Create a new builder with defaults.

Source

pub fn api_key(self, key: impl Into<String>) -> Self

Set the API key.

Source

pub fn api_url(self, url: impl Into<String>) -> Result<Self, CachekitError>

Set the API base URL. Must use HTTPS.

Source

pub fn master_key(self, hex_key: &str) -> Result<Self, CachekitError>

Set the master key from a hex string. Must decode to at least 32 bytes.

Source

pub fn previous_master_keys( self, hex_keys: &[&str], ) -> Result<Self, CachekitError>

Set decrypt-only previous master keys from hex strings, in attempt order, on the CachekitConfig value.

No client reads keys set here. With the encryption feature enabled, these paths apply previous keys to a client; each one decrypts with the current key first, then each previous key in order:

  • CacheKitBuilder::encryption_from_env() and CacheKit::secure_from_env() read them from CACHEKIT_PREVIOUS_MASTER_KEYS.
  • CacheKitBuilder::encryption_with_previous() takes them as hex arguments, validated as this method validates them, for any tenant.
  • CacheKitBuilder::encryption_from_bytes_with_previous() takes them as arguments. It requires every key to be exactly 32 raw bytes, while this method accepts hex that decodes to 32 bytes or more.

Without the encryption feature no call that asks to encrypt accepts a key: CacheKit::secure_from_env() does not exist, and all three builder methods always return CachekitError::Config. CacheKit::from_env() validates the variables and applies them on no build.

Validation is identical to Self::master_key per entry (valid hex, at least 32 bytes). At most MAX_PREVIOUS_MASTER_KEYS entries — more is a CachekitError::Config, never truncated. The current master key must not reappear here (forward-only rotation: a retired key is never re-promoted).

§Examples
use cachekit::config::CachekitConfigBuilder;

// k2 is current after rotation; k1 is kept as a decrypt-only previous key.
let k1 = "11".repeat(32);
let k2 = "22".repeat(32);

let config = CachekitConfigBuilder::new()
    .master_key(&k2)?
    .previous_master_keys(&[k1.as_str()])?
    .build();

assert_eq!(config.previous_master_keys.len(), 1);
Source

pub fn default_ttl(self, ttl: Duration) -> Result<Self, CachekitError>

Set the default TTL. Must be non-zero; a positive sub-second TTL is sent to the backend as 1 second.

Source

pub fn namespace(self, ns: impl Into<String>) -> Self

Set the namespace prefix.

Source

pub fn l1_capacity(self, capacity: usize) -> Self

Set the L1 cache capacity (max entries).

Source

pub fn build(self) -> CachekitConfig

Finalise and return the CachekitConfig.

Trait Implementations§

Source§

impl Default for CachekitConfigBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. 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<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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

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