soma_infra/
progress_sink.rs1use std::fmt::Display;
2
3use soma_ops::{ProgressEvent, ProgressSink};
4
5pub trait MutationProgressReporter: Send + Sync {
7 fn report(&self, event: &ProgressEvent) -> Result<(), String>;
9}
10
11impl<T> MutationProgressReporter for T
12where
13 T: ProgressSink,
14 T::Error: Display,
15{
16 fn report(&self, event: &ProgressEvent) -> Result<(), String> {
17 ProgressSink::report(self, event).map_err(|error| error.to_string())
18 }
19}
20
21#[cfg(test)]
22#[path = "progress_sink_tests.rs"]
23mod tests;