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}