]>
Commit | Line | Data |
---|---|---|
ea8adc8c XL |
1 | extern crate flate2; |
2 | ||
3 | use std::io::prelude::*; | |
4 | use std::io; | |
5 | use flate2::Compression; | |
6 | use flate2::write::GzEncoder; | |
7 | use flate2::read::GzDecoder; | |
8 | ||
9 | // Compress a sample string and print it after transformation. | |
10 | fn main() { | |
ff7c6d11 | 11 | let mut e = GzEncoder::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 Gz Encoded vector of bytes and returns a string or error | |
18 | // Here &[u8] implements Read | |
19 | fn decode_reader(bytes: Vec<u8>) -> io::Result<String> { | |
ff7c6d11 | 20 | let mut gz = GzDecoder::new(&bytes[..]); |
ea8adc8c XL |
21 | let mut s = String::new(); |
22 | gz.read_to_string(&mut s)?; | |
23 | Ok(s) | |
24 | } |