| 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()); |
| } |