parallel_disk_usage/
reporter.rs

1pub mod error_only_reporter;
2pub mod error_report;
3pub mod event;
4pub mod progress_and_error_reporter;
5pub mod progress_report;
6
7pub use error_only_reporter::ErrorOnlyReporter;
8pub use error_report::ErrorReport;
9pub use event::Event;
10pub use progress_and_error_reporter::ProgressAndErrorReporter;
11pub use progress_report::ProgressReport;
12
13use crate::size;
14
15/// Report progress.
16pub trait Reporter<Size: size::Size> {
17    /// Handle report event.
18    fn report(&self, event: Event<Size>);
19}
20
21/// Utilize threads to report progress.
22pub trait ParallelReporter<Size: size::Size>: Reporter<Size> {
23    /// Error type of the [`destroy`](Self::destroy) method.
24    type DestructionError;
25    /// Stop all threads.
26    fn destroy(self) -> Result<(), Self::DestructionError>;
27}
28
29impl<Size, Target> Reporter<Size> for &Target
30where
31    Size: size::Size,
32    Target: Reporter<Size>,
33{
34    fn report(&self, event: Event<Size>) {
35        Target::report(*self, event)
36    }
37}