progress_monitor/
lib.rs

1use error::CloseError;
2
3pub mod error;
4pub mod monitor;
5pub mod work;
6
7pub mod prelude {
8    pub use crate::error::CloseError;
9    pub use crate::monitor::callback::CallbackProgressMonitor;
10    pub use crate::monitor::sub::ChildMonitor;
11    pub use crate::monitor::ProgressMonitor;
12    pub use crate::monitor::ProgressMonitorDivision;
13    pub use crate::work::numeric::NumericWork;
14    pub use crate::work::set::SetWork;
15    pub use crate::work::Work;
16}
17
18#[cfg(test)]
19mod test {
20    use tracing::Level;
21    use tracing_subscriber::FmtSubscriber;
22
23    use crate::prelude::*;
24
25    #[test]
26    fn test() {
27        tracing::subscriber::set_global_default(
28            FmtSubscriber::builder()
29                .with_max_level(Level::TRACE)
30                .finish(),
31        )
32        .expect("setting default subscriber failed");
33
34        let mut mon =
35            CallbackProgressMonitor::new("root", 300, |a: &NumericWork<u64>, w: &NumericWork<u64>| {
36                tracing::info!("{}/{}", w, a)
37            });
38        mon.worked(100);
39
40        let mut sub = mon.new_child("a", 100, 3000);
41        sub.worked(1000);
42        sub.worked(1000);
43        sub.worked(1000);
44        sub.close().unwrap();
45        drop(sub);
46
47        mon.worked(120);
48        mon.close().unwrap();
49    }
50}