pub trait ProgressReporter: Send + Sync {
// Required method
fn report(&self, event: &ProgressEvent);
}Expand description
Receives immutable progress events for one logical operation.
A reporter normally receives one logical operation’s event stream. If an
implementation multiplexes multiple operations into one sink, that routing
information is reporter-specific metadata and is intentionally not part of
ProgressEvent.
§Examples
use std::sync::Mutex;
use std::time::Duration;
use qubit_progress::{
ProgressEvent,
ProgressMetric,
ProgressPhase,
ProgressReporter,
ProgressSchema,
};
#[derive(Default)]
struct RecordingReporter {
phases: Mutex<Vec<ProgressPhase>>,
}
impl ProgressReporter for RecordingReporter {
fn report(&self, event: &ProgressEvent) {
self.phases.lock().expect("phase list should lock").push(event.phase());
}
}
let reporter = RecordingReporter::default();
let schema = ProgressSchema::new(vec![ProgressMetric::new("entries", "Entries")]);
reporter.report(&ProgressEvent::started(schema, Vec::new(), Duration::ZERO));
assert_eq!(
reporter.phases.lock().expect("phase list should lock").as_slice(),
&[ProgressPhase::Started],
);Required Methods§
Sourcefn report(&self, event: &ProgressEvent)
fn report(&self, event: &ProgressEvent)
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".