use flate2::bufread; use std::env::args; use std::fs::File; use std::io::copy; use std::io::BufReader; use std::time::Instant; fn main() { // E.g. `cargo run --example decompress_file examples/hello_world.txt.gz hello_world.txt` if args().len() != 3 { eprintln!("Usage: ./decompress_file `source` `target`"); return; } let input = BufReader::new(File::open(args().nth(1).unwrap()).unwrap()); let mut output = File::create(args().nth(2).unwrap()).unwrap(); let source_len = input.get_ref().metadata().unwrap().len(); let start = Instant::now(); let mut decoder = bufread::GzDecoder::new(input); copy(&mut decoder, &mut output).unwrap(); println!("Source len: {:?}", source_len); println!("Target len: {:?}", output.metadata().unwrap().len()); println!("Elapsed: {:?}", start.elapsed()); }