use async_compression::tokio_02::write::ZlibEncoder;
use flate2::write::ZlibEncoder as Flate2ZlibEncoder;
use flate2::Compression;
use std::io::Write;
use tokio::io::AsyncWrite;
use tokio::io::AsyncWriteExt;
#[tokio::main]
async fn main() {
let x = b"example";
let mut e = ZlibEncoder::new(Vec::new());
e.write_all(x).await.unwrap();
e.flush().await.unwrap();
let temp = e.into_inner();
println!("{:?}", temp);
// [120, 156, 74, 173, 72, 204, 45, 200, 73, 5, 0, 0, 0, 255, 255]
// import zlib; print(zlib.decompress(bytes([120, 156, 74, 173, 72, 204, 45, 200, 73, 5, 0, 0, 0, 255, 255])))
// fail with:
// Traceback (most recent call last):
// File "test.py", line 25, in <module>
// print(zlib.decompress(bytes([120, 156, 74, 173, 72, 204, 45, 200, 73, 5, 0, 0, 0, 255, 255])))
// zlib.error: Error -5 while decompressing data: incomplete or truncated stream
// Working code with flate2
let mut encoder = Flate2ZlibEncoder::new(Vec::new(), Compression::Default);
encoder.write_all(x).unwrap();
encoder.flush().unwrap();
let temp = encoder.finish().unwrap();
println!("{:?}", temp);
// [120, 1, 0, 7, 0, 248, 255, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 255, 255, 3, 0, 11, 192, 2, 237]
// import zlib; print(zlib.decompress(bytes([120, 1, 0, 7, 0, 248, 255, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 255, 255, 3, 0, 11, 192, 2, 237])))
// prints b'example`
}