pub enum CompiledModel {
Chain(Vec<RouteTarget>),
Canary(Vec<(u32, RouteTarget)>),
Policy(Arc<CompiledRoutingPolicy>),
Experiment(Arc<CompiledAbTest>),
}Expand description
The compiled alias entry (DW-076): either a failover chain
(primary first), a canary split, a routing policy (DW-085), or an
A/B test experiment (DW-086). A policy alias composes over OTHER
aliases’ routing plans, so it has no provider/model pair of its
own — validation enforces that routing_policy is mutually
exclusive with failover and canary. An experiment alias
composes over OTHER aliases’ routing plans too — validation
enforces that ab_test is mutually exclusive with failover,
canary, and routing_policy.
Variants§
Chain(Vec<RouteTarget>)
[primary, alternates...] in config order.
Canary(Vec<(u32, RouteTarget)>)
Weighted versions; the pick is deterministic per request id.
Policy(Arc<CompiledRoutingPolicy>)
A routing policy (DW-085): within-request escalation or latency-vs-cost selection. The policy is evaluated per request (async — a FallbackChain policy may call an external classifier service).
Experiment(Arc<CompiledAbTest>)
An A/B test experiment (DW-086): two or more variants, each naming a model alias (and an optional prompt version). The experiment is evaluated per request (a deterministic weighted pick by request id selects a variant). Arc’d because the compiled test carries resolved targets and prompt messages.
Trait Implementations§
Source§impl Clone for CompiledModel
impl Clone for CompiledModel
Source§fn clone(&self) -> CompiledModel
fn clone(&self) -> CompiledModel
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 CompiledModel
impl RefUnwindSafe for CompiledModel
impl Send for CompiledModel
impl Sync for CompiledModel
impl Unpin for CompiledModel
impl UnwindSafe for CompiledModel
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