]> git.proxmox.com Git - rustc.git/blame - vendor/flate2/examples/gzdecoder-write.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / flate2 / examples / gzdecoder-write.rs
CommitLineData
b7449926
XL
1extern crate flate2;
2
60c5eb7d 3use flate2::write::{GzDecoder, GzEncoder};
b7449926 4use flate2::Compression;
60c5eb7d
XL
5use std::io;
6use std::io::prelude::*;
b7449926
XL
7
8// Compress a sample string and print it after transformation.
9fn 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
18fn 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}