async-compression 0.4.46

Adaptors between compression crates and Rust's modern asynchronous IO types.
Documentation
use async_compression::tokio::{bufread, write};
use std::io::ErrorKind;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::test]
async fn truncated_stream_returns_unexpected_eof_on_read_and_shutdown() {
    let input = tokio::io::BufReader::new(&[0x00][..]);
    let mut decoder = bufread::Deflate64Decoder::new(input);
    let mut output = Vec::new();

    let error = decoder.read_to_end(&mut output).await.unwrap_err();
    assert_eq!(error.kind(), ErrorKind::UnexpectedEof);

    let mut decoder = write::Deflate64Decoder::new(Vec::new());
    decoder.write_all(&[0x00]).await.unwrap();

    let error = decoder.shutdown().await.unwrap_err();
    assert_eq!(error.kind(), ErrorKind::UnexpectedEof);
}