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