pub struct DiagnosticRecorder { /* private fields */ }Expand description
A cloneable callback whose recorded output remains accessible after a run.
Pass a clone to a runner and retain the original handle:
let recorder = DiagnosticRecorder::new(DiagnosticRecorderConfig::default());
let callback = Box::new(recorder.clone());
// Run with `callback`, then read `recorder.diagnostics()`.Clones share one recorder state and may be read from another thread while a run is active, but they must not be installed in multiple concurrent runs: each run resets the shared state at its start. Recorder state is best-effort diagnostics, so a poisoned mutex is recovered and reset on the next run rather than preventing later diagnostic reads or reuse.
Implementations§
Source§impl DiagnosticRecorder
impl DiagnosticRecorder
Sourcepub fn new(config: DiagnosticRecorderConfig) -> Self
pub fn new(config: DiagnosticRecorderConfig) -> Self
Creates a recorder with shared state so clones observe the same captured data.
Sourcepub fn diagnostics(&self) -> ReconstructionDiagnostics
pub fn diagnostics(&self) -> ReconstructionDiagnostics
Returns a cloned, serializable snapshot of all collected diagnostic records.
Sourcepub fn into_diagnostics(self) -> ReconstructionDiagnostics
pub fn into_diagnostics(self) -> ReconstructionDiagnostics
Consumes this handle and returns a cloned diagnostics snapshot shared with any clones.
Sourcepub fn object_snapshots(&self) -> Vec<(usize, Array2<f64>, Array2<f64>)>
pub fn object_snapshots(&self) -> Vec<(usize, Array2<f64>, Array2<f64>)>
Returns cloned (iteration, amplitude, wrapped_phase) object snapshots.
Trait Implementations§
Source§impl Callback for DiagnosticRecorder
impl Callback for DiagnosticRecorder
Source§fn requires_for(
&self,
hook: CallbackHook,
iteration: usize,
) -> Vec<DiagnosticRequest>
fn requires_for( &self, hook: CallbackHook, iteration: usize, ) -> Vec<DiagnosticRequest>
Source§fn on_start(&mut self, context: &StepContext<'_>) -> Result<CallbackAction>
fn on_start(&mut self, context: &StepContext<'_>) -> Result<CallbackAction>
Source§fn on_iteration_end(
&mut self,
context: &StepContext<'_>,
) -> Result<CallbackAction>
fn on_iteration_end( &mut self, context: &StepContext<'_>, ) -> Result<CallbackAction>
Source§fn on_finish(&mut self, _result: &ReconstructionResult) -> Result<()>
fn on_finish(&mut self, _result: &ReconstructionResult) -> Result<()>
Source§fn requires(&self) -> Vec<DiagnosticRequest>
fn requires(&self) -> Vec<DiagnosticRequest>
Source§fn on_frame_end(&mut self, _context: &StepContext<'_>) -> Result<CallbackAction>
fn on_frame_end(&mut self, _context: &StepContext<'_>) -> Result<CallbackAction>
frame_index and natural loss remain per-frame.Source§impl Clone for DiagnosticRecorder
impl Clone for DiagnosticRecorder
Source§fn clone(&self) -> DiagnosticRecorder
fn clone(&self) -> DiagnosticRecorder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for DiagnosticRecorder
impl RefUnwindSafe for DiagnosticRecorder
impl Send for DiagnosticRecorder
impl Sync for DiagnosticRecorder
impl Unpin for DiagnosticRecorder
impl UnsafeUnpin for DiagnosticRecorder
impl UnwindSafe for DiagnosticRecorder
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,
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