From a67337bb5ddc7a764648dd17fa7ecb4399ce3d49 Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Sat, 3 Aug 2019 17:22:26 +0800 Subject: [PATCH] user refcell --- src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 {