pub struct SecondOpinionRung {
pub label: &'static str,
pub assignments: Vec<String>,
}Expand description
One rung of the local-infeasibility second-opinion ladder: a label for the console plus the option assignments that define this re-solve’s trajectory.
Assignments are applied on top of the baseline options, not on top of the
previous rung — see second_opinion_rungs.
Fields§
§label: &'static str§assignments: Vec<String>The knob this rung varies, and only that knob — one
read_from_str line per assignment.
A rung does not carry lines undoing the earlier rungs. It used to,
and that was a defect: the undo was written as the baseline’s
resolved value, so a knob the caller never set came back set.
mu_strategy is the one that bites — is_mu_strategy_fallback_enabled
is default-on only while mu_strategy is unset, so rung 3 writing
back a resolved monotone silently switched off pounce’s own
μ-strategy stall retry for the duration of the rung. Measured on
KRONOS a18_ackley1: the displaced solve stalls at max_iter, the
flip that would have certified it in 237 iterations never fires, and
the ladder reports no recovery. Restoring by value is not the same
as restoring by set-ness.
The driver restores the baseline with
OptionSnapshot::apply before every rung, which does honour
set-ness, so a rung starts from the true baseline by construction.
Trait Implementations§
Source§impl Clone for SecondOpinionRung
impl Clone for SecondOpinionRung
Source§fn clone(&self) -> SecondOpinionRung
fn clone(&self) -> SecondOpinionRung
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SecondOpinionRung
impl Debug for SecondOpinionRung
impl Eq for SecondOpinionRung
Source§impl PartialEq for SecondOpinionRung
impl PartialEq for SecondOpinionRung
impl StructuralPartialEq for SecondOpinionRung
Auto Trait Implementations§
impl Freeze for SecondOpinionRung
impl RefUnwindSafe for SecondOpinionRung
impl Send for SecondOpinionRung
impl Sync for SecondOpinionRung
impl Unpin for SecondOpinionRung
impl UnsafeUnpin for SecondOpinionRung
impl UnwindSafe for SecondOpinionRung
Blanket Implementations§
Source§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, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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