diff --git a/src/lib.rs b/src/lib.rs index a3516a5..09eb620 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ extern crate term; use std::{ + cell::RefCell, env, fs, io::{self, Write, Error, ErrorKind}, @@ -240,12 +241,11 @@ pub fn extract_package_and_wait(dir: &str, file_name: &str) -> io::Result<()> { pub fn copy_io(reader: &mut R, writer: &mut W, total: i64) -> io::Result where R: io::Read, W: io::Write { - // let mut written = 0u64; - // let written_cell = RefCell::new(written); + let written_cell = RefCell::new(0u64); let start = SystemTime::now(); - let written = copy_io_callback(reader, writer, total, &|total, written, _len| { - // let mut written_borrowed = written_cell.borrow_mut(); - //written_cell.replace_with(|&mut old_written| old_written + len as u64); + let written = copy_io_callback(reader, writer, total, &|total, _written, len| { + written_cell.replace_with(|&mut w| w + len as u64); + let written = *written_cell.borrow(); let cost = SystemTime::now().duration_since(start.clone()).unwrap().as_secs(); let mut download_speed = "-".to_string(); if cost > 0 {