1 use flate2::write::GzEncoder;
2 use flate2::Compression;
3 use std::env::args;
4 use std::fs::File;
5 use std::io::copy;
6 use std::io::BufReader;
7 use std::time::Instant;
8 
main()9 fn main() {
10     if args().len() != 3 {
11         eprintln!("Usage: ./compress_file `source` `target`");
12         return;
13     }
14     let mut input = BufReader::new(File::open(args().nth(1).unwrap()).unwrap());
15     let output = File::create(args().nth(2).unwrap()).unwrap();
16     let mut encoder = GzEncoder::new(output, Compression::default());
17     let start = Instant::now();
18     copy(&mut input, &mut encoder).unwrap();
19     let output = encoder.finish().unwrap();
20     println!(
21         "Source len: {:?}",
22         input.get_ref().metadata().unwrap().len()
23     );
24     println!("Target len: {:?}", output.metadata().unwrap().len());
25     println!("Elapsed: {:?}", start.elapsed());
26 }
27