2个不稳定版本
0.1.0 | 2021年12月3日 |
---|---|
0.0.2 | 2021年9月18日 |
0.0.1 |
|
#319 in WebSocket
16KB
260 行
zlib-stream-rs
一个简单的实用工具crate,使从zlib-stream解压缩更加容易。
此crate基于flate2以及它们的cloudflare zlib后端。
用法
- 使用
stream
功能的StreamExt
use zlib_stream::stream::ZlibStream;
async fn setup<V: AsRef<[u8]> + Sized, T: Stream<Item=V> + Unpin>(stream: T) {
let mut stream = ZlibStream::new(stream);
loop {
let data: Option<Result<Vec<u8>, flate2::DecompressError>> = stream.next().await;
do_something(data);
}
}
- 裸实现
use zlib_stream::{ZlibStreamDecompressor, ZlibDecompressionError};
fn worker_loop() {
let mut decompress: ZlibStreamDecompressor = ZlibStreamDecompressor::new();
loop {
let mut frame: Vec<u8> = get_compressed_frame();
match decompress.decompress(frame) {
Ok(vec) => process_data(vec),
Err(ZlibDecompressionError::NeedMoreData) => continue,
Err(_err) => panic!("Broken frame!"),
}
}
}
依赖关系
~4–15MB
~172K SLoC