pub trait ProgressReporter: Send + Sync {
// Required method
fn report(&self, event: &ProgressEvent);
}Expand description
Receives immutable progress events.
§Examples
use std::sync::Mutex;
use std::time::Duration;
use qubit_progress::{
ProgressCounters,
ProgressEvent,
ProgressPhase,
ProgressReporter,
};
#[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();
reporter.report(&ProgressEvent::started(
ProgressCounters::new(Some(1)),
Duration::ZERO,
));
assert_eq!(
reporter.phases.lock().expect("phase list should lock").as_slice(),
&[ProgressPhase::Started],
);