pub struct ExitEvaluator {
pub conditions: Vec<Box<dyn ExitCondition>>,
pub initial: GlobalDiagnostics,
}Expand description
Aggregates and evaluates all registered exit conditions each timestep.
Holds a snapshot of the initial diagnostics so each condition can compute drift relative to the simulation’s starting state.
Fields§
§conditions: Vec<Box<dyn ExitCondition>>Registered exit conditions, checked in order until one triggers.
initial: GlobalDiagnosticsDiagnostics snapshot from the first timestep, used as the reference baseline.
Implementations§
Source§impl ExitEvaluator
impl ExitEvaluator
Sourcepub fn new(initial: GlobalDiagnostics) -> Self
pub fn new(initial: GlobalDiagnostics) -> Self
Create a new evaluator with the given initial diagnostics and no conditions.
Sourcepub fn add_condition(&mut self, cond: Box<dyn ExitCondition>)
pub fn add_condition(&mut self, cond: Box<dyn ExitCondition>)
Register an exit condition to be checked each timestep.
Sourcepub fn check(&self, current: &GlobalDiagnostics) -> Option<ExitReason>
pub fn check(&self, current: &GlobalDiagnostics) -> Option<ExitReason>
Check all registered conditions against the current diagnostics.
Returns the first triggered ExitReason, or None if the simulation should continue.
Auto Trait Implementations§
impl Freeze for ExitEvaluator
impl !RefUnwindSafe for ExitEvaluator
impl !Send for ExitEvaluator
impl !Sync for ExitEvaluator
impl Unpin for ExitEvaluator
impl UnsafeUnpin for ExitEvaluator
impl !UnwindSafe for ExitEvaluator
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
Mutably borrows from an owned value. Read more
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
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>
Converts
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>
Converts
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