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