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§
Sourcefn label_for(&self, key: &RecordKey) -> Option<SplitLabel>
fn label_for(&self, key: &RecordKey) -> Option<SplitLabel>
Return split label for key if known/derivable.
Sourcefn upsert(&self, key: RecordKey, label: SplitLabel) -> Result<(), SamplerError>
fn upsert(&self, key: RecordKey, label: SplitLabel) -> Result<(), SamplerError>
Persist an explicit split assignment for key.
Sourcefn ratios(&self) -> SplitRatios
fn ratios(&self) -> SplitRatios
Return configured split ratios.
Sourcefn ensure(&self, key: RecordKey) -> Result<SplitLabel, SamplerError>
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".