]>
Commit | Line | Data |
---|---|---|
b7449926 XL |
1 | extern crate flate2; |
2 | ||
60c5eb7d | 3 | use flate2::write::{GzDecoder, GzEncoder}; |
b7449926 | 4 | use flate2::Compression; |
60c5eb7d XL |
5 | use std::io; |
6 | use std::io::prelude::*; | |
b7449926 XL |
7 | |
8 | // Compress a sample string and print it after transformation. | |
9 | fn main() { | |
10 | let mut e = GzEncoder::new(Vec::new(), Compression::default()); | |
0bf4aa26 | 11 | e.write_all(b"Hello World").unwrap(); |
b7449926 XL |
12 | let bytes = e.finish().unwrap(); |
13 | println!("{}", decode_writer(bytes).unwrap()); | |
14 | } | |
15 | ||
16 | // Uncompresses a Gz Encoded vector of bytes and returns a string or error | |
17 | // Here &[u8] implements Read | |
18 | fn decode_writer(bytes: Vec<u8>) -> io::Result<String> { | |
19 | let mut writer = Vec::new(); | |
20 | let mut decoder = GzDecoder::new(writer); | |
0bf4aa26 | 21 | decoder.write_all(&bytes[..])?; |
b7449926 XL |
22 | decoder.try_finish()?; |
23 | writer = decoder.finish()?; | |
24 | let return_string = String::from_utf8(writer).expect("String parsing error"); | |
25 | Ok(return_string) | |
26 | } |