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