pub struct CompiledAbTest {
pub name: String,
pub variants: Vec<CompiledAbVariant>,
}Expand description
A compiled A/B test (DW-086): two or more variants with resolved
targets. At request time, a deterministic weighted pick by request
id selects a variant. Built at AiRuntime
compile time from the config block; immutable once built.
Fields§
§name: StringThe experiment name (for analytics/metrics attribution).
variants: Vec<CompiledAbVariant>The compiled variants.
Implementations§
Source§impl CompiledAbTest
impl CompiledAbTest
Sourcepub fn compile(
name: &str,
test: &AiAbTest,
models: &BTreeMap<String, CompiledModel>,
experiments: Option<&AiExperiments>,
) -> Option<Self>
pub fn compile( name: &str, test: &AiAbTest, models: &BTreeMap<String, CompiledModel>, experiments: Option<&AiExperiments>, ) -> Option<Self>
Compile from config. Resolves each variant’s model alias to
its primary RouteTarget against the first-pass compiled
model map (plain chain/canary aliases only — an experiment
alias cannot reference another experiment alias, so nested
experiments are rejected by returning None). Returns None
when a referenced alias is missing or is itself an experiment
alias (a validate-vs-build race or an authoring error
validation missed).
Sourcepub fn pick(&self, pick_key: &str) -> &CompiledAbVariant
pub fn pick(&self, pick_key: &str) -> &CompiledAbVariant
The deterministic weighted pick for pick_key (the request
id): the variant whose cumulative weight bound first exceeds
pick_hash(key) % total. Same slot semantics as canary
splits.
Trait Implementations§
Source§impl Clone for CompiledAbTest
impl Clone for CompiledAbTest
Source§fn clone(&self) -> CompiledAbTest
fn clone(&self) -> CompiledAbTest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for CompiledAbTest
impl RefUnwindSafe for CompiledAbTest
impl Send for CompiledAbTest
impl Sync for CompiledAbTest
impl Unpin for CompiledAbTest
impl UnwindSafe for CompiledAbTest
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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