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
impl CachekitConfigBuilder
Sourcepub fn api_url(self, url: impl Into<String>) -> Result<Self, CachekitError>
pub fn api_url(self, url: impl Into<String>) -> Result<Self, CachekitError>
Set the API base URL. Must use HTTPS.
Sourcepub fn master_key(self, hex_key: &str) -> Result<Self, CachekitError>
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.
Sourcepub fn previous_master_keys(
self,
hex_keys: &[&str],
) -> Result<Self, CachekitError>
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()andCacheKit::secure_from_env()read them fromCACHEKIT_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);Sourcepub fn default_ttl(self, ttl: Duration) -> Result<Self, CachekitError>
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.
Sourcepub fn l1_capacity(self, capacity: usize) -> Self
pub fn l1_capacity(self, capacity: usize) -> Self
Set the L1 cache capacity (max entries).
Sourcepub fn build(self) -> CachekitConfig
pub fn build(self) -> CachekitConfig
Finalise and return the CachekitConfig.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CachekitConfigBuilder
impl RefUnwindSafe for CachekitConfigBuilder
impl Send for CachekitConfigBuilder
impl Sync for CachekitConfigBuilder
impl Unpin for CachekitConfigBuilder
impl UnsafeUnpin for CachekitConfigBuilder
impl UnwindSafe for CachekitConfigBuilder
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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