pub fn rescue(
    reader: &mut dyn Rescuable,
    writer: &mut dyn Write,
    threads: usize,
    progress_listener: &mut Option<&mut dyn ListenProgress>
) -> Results