pub trait ProgressReporter:
Send
+ Sync
+ Debug {
// Required method
fn report(&self, progress: TaskProgress);
// Provided methods
fn report_percent(&self, percent: u8, message: String) { ... }
fn report_step(&self, current: u32, total: u32, message: String) { ... }
}