pub trait Callback {
// Required methods
fn start_download(&mut self, length: u64, file: &str);
fn increment_downloaded(&mut self, downloaded: usize);
fn end_download(&mut self);
// Provided methods
fn conflict(&mut self) { ... }
fn error(&mut self) { ... }
}