Skip to main content

soma_infra/
progress_sink.rs

1use std::fmt::Display;
2
3use soma_ops::{ProgressEvent, ProgressSink};
4
5/// Object-safe adapter for canonical operation progress delivery.
6pub trait MutationProgressReporter: Send + Sync {
7    /// Delivers one canonical progress event without changing execution truth.
8    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;