Skip to main content

SplitStore

Trait SplitStore 

Source
pub trait SplitStore: Send + Sync {
    // Required methods
    fn label_for(&self, key: &RecordKey) -> Option<SplitLabel>;
    fn upsert(
        &self,
        key: RecordKey,
        label: SplitLabel,
    ) -> Result<(), SamplerError>;
    fn ratios(&self) -> SplitRatios;
    fn ensure(&self, key: RecordKey) -> Result<SplitLabel, SamplerError>;
}
Expand description

Split assignment backend.

Implementations map composite RecordKey values to split labels deterministically. Keys (not bare ids) so same-id records from different sources are assigned independently.

Required Methods§

Source

fn label_for(&self, key: &RecordKey) -> Option<SplitLabel>

Return split label for key if known/derivable.

Source

fn upsert(&self, key: RecordKey, label: SplitLabel) -> Result<(), SamplerError>

Persist an explicit split assignment for key.

Source

fn ratios(&self) -> SplitRatios

Return configured split ratios.

Source

fn ensure(&self, key: RecordKey) -> Result<SplitLabel, SamplerError>

Return the split label for key, creating/deriving one when needed.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§