parallel_disk_usage/reporter/
error_only_reporter.rs1use super::{ErrorReport, Event, ParallelReporter, Reporter};
2use crate::size;
3use std::convert::Infallible;
4
5#[derive(Debug)]
7pub struct ErrorOnlyReporter<ReportError: Fn(ErrorReport)> {
8 report_error: ReportError,
10}
11
12impl<ReportError: Fn(ErrorReport)> ErrorOnlyReporter<ReportError> {
13 pub fn new(report_error: ReportError) -> Self {
15 ErrorOnlyReporter { report_error }
16 }
17}
18
19impl<Size, ReportError> Reporter<Size> for ErrorOnlyReporter<ReportError>
20where
21 Size: size::Size,
22 ReportError: Fn(ErrorReport),
23{
24 fn report(&self, event: Event<Size>) {
25 let ErrorOnlyReporter { report_error } = self;
26 if let Event::EncounterError(error_report) = event {
27 report_error(error_report);
28 }
29 }
30}
31
32impl<Size, ReportError> ParallelReporter<Size> for ErrorOnlyReporter<ReportError>
33where
34 Size: size::Size,
35 ReportError: Fn(ErrorReport),
36{
37 type DestructionError = Infallible; fn destroy(self) -> Result<(), Self::DestructionError> {
39 Ok(())
40 }
41}