1pub trait RunObserver {
2 fn on_folder_cleaned(&mut self, size: u64) -> Option<String>;
5
6 fn on_run_complete(&mut self, total: u64) -> Option<String>;
9}
10
11pub struct NoOpObserver;
12
13impl RunObserver for NoOpObserver {
14 fn on_folder_cleaned(&mut self, _size: u64) -> Option<String> {
15 None
16 }
17
18 fn on_run_complete(&mut self, _total: u64) -> Option<String> {
19 None
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn noop_observer_returns_none() {
29 let mut observer = NoOpObserver;
30 assert!(observer.on_folder_cleaned(1024).is_none());
31 assert!(observer.on_run_complete(2048).is_none());
32 }
33}