pub trait SplitStore: Send + Sync {
// Required methods
fn label_for(&self, id: &RecordId) -> Option<SplitLabel>;
fn upsert(
&self,
id: RecordId,
label: SplitLabel,
) -> Result<(), SamplerError>;
fn ratios(&self) -> SplitRatios;
fn ensure(&self, id: RecordId) -> Result<SplitLabel, SamplerError>;
}Expand description
Split assignment backend.
Implementations map RecordId values to split labels deterministically.
Required Methods§
Sourcefn label_for(&self, id: &RecordId) -> Option<SplitLabel>
fn label_for(&self, id: &RecordId) -> Option<SplitLabel>
Return split label for id if known/derivable.
Sourcefn upsert(&self, id: RecordId, label: SplitLabel) -> Result<(), SamplerError>
fn upsert(&self, id: RecordId, label: SplitLabel) -> Result<(), SamplerError>
Persist an explicit split assignment for id.
Sourcefn ratios(&self) -> SplitRatios
fn ratios(&self) -> SplitRatios
Return configured split ratios.
Sourcefn ensure(&self, id: RecordId) -> Result<SplitLabel, SamplerError>
fn ensure(&self, id: RecordId) -> Result<SplitLabel, SamplerError>
Return the split label for id, creating/deriving one when needed.