pub struct CompilerRuleReport {
pub rule: String,
pub kind: &'static str,
pub cadence: &'static str,
pub tier: &'static str,
pub reason: Option<String>,
}Expand description
Where ONE rule of a Problem landed, and at what cadence (API_SPEC §5.8, “Every Problem reports what ran”).
Fields§
§rule: StringThe rule — an equation or an observed — component-qualified, the same
spelling observed_field resolves and a refusal names.
kind: &'static str"observed" or "state derivative" for a rule of the compiled model.
The evaluations construction performs OUTSIDE that rule set are
reported too, under their own kinds: "build-time observed" and
"value invention" (the build pipeline), and "initial condition" and
"initial-condition scope" (a field ic and the state-free observeds
it reads).
cadence: &'static strThe cadence tier the rule runs at: "const" (once per solve, at
setup), "discrete" (once per refresh segment) or "continuous"
(every right-hand-side call). The tier is the cost story: a decline at
const costs once, the same decline at continuous costs per step.
tier: &'static strWhere the rule landed: "taped", "xla" (lowered from the tape into
the compiled XLA program, under Compiler::Xla), "fallback" (the
per-cell oracle beneath the tape, reachable only outside a strict
compiler), or "oracle" (every rule under Compiler::Interpreter,
by design). An evaluation outside the compiled rule set is
"vectorized" when the whole-array overlay served it and "oracle"
when it was walked per cell, which a strict compiler refuses. A
"value invention" row is "relational": the producer’s member set,
computed once at setup by the relational engine from build-time factors
(CONFORMANCE_SPEC §5.7.6 keeps that engine off the hot path), under
every compiler alike. It is neither the oracle nor a fallback, so a
build that succeeds under a strict compiler still has
CompilerReport::n_oracle == 0.
reason: Option<String>For a "fallback", the DEEPEST decline reason reached while trying to
lower the rule; for an "oracle" evaluation outside the compiled rule
set, why it was walked per cell. None otherwise.
Trait Implementations§
Source§impl Clone for CompilerRuleReport
impl Clone for CompilerRuleReport
Auto Trait Implementations§
impl Freeze for CompilerRuleReport
impl RefUnwindSafe for CompilerRuleReport
impl Send for CompilerRuleReport
impl Sync for CompilerRuleReport
impl Unpin for CompilerRuleReport
impl UnsafeUnpin for CompilerRuleReport
impl UnwindSafe for CompilerRuleReport
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.