20 releases

0.6.3 Mar 2, 2026
0.6.0 Jan 23, 2026
0.5.5 Dec 22, 2025
0.5.2 Sep 2, 2025
0.0.1 Feb 23, 2024

#38 in Compression

Download history 1907351/week @ 2026-02-21 2396556/week @ 2026-02-28 2456034/week @ 2026-03-07 2326100/week @ 2026-03-14 2196122/week @ 2026-03-21 2137752/week @ 2026-03-28 2251845/week @ 2026-04-04 2279028/week @ 2026-04-11 2289503/week @ 2026-04-18 2381027/week @ 2026-04-25 2560801/week @ 2026-05-02 2876491/week @ 2026-05-09 3017832/week @ 2026-05-16 2722714/week @ 2026-05-23 3030997/week @ 2026-05-30 2603036/week @ 2026-06-06

11,860,658 downloads per month
Used in 1,749 crates (18 directly)

Zlib license

580KB
12K SLoC

A pure-rust implementation of zlib.

This is a low-level implementation crate for use in libraries like flate2 and rustls. For a more high-level interface, use flate2.

For a zlib -compatible rust api of this crate, see libz-rs-sys. For instructions on integrating zlib-rs into a C library, see libz-rs-sys-cdylib.

Example

use zlib_rs::ReturnCode;
use zlib_rs::{DeflateConfig, compress_bound, compress_slice};
use zlib_rs::{InflateConfig, decompress_slice};

let input = b"Hello World";

// --- compress ---
let mut compressed_buf = vec![0u8; compress_bound(input.len())];
let (compressed, rc) =
    compress_slice(&mut compressed_buf, input, DeflateConfig::default());
assert_eq!(rc, ReturnCode::Ok);

// --- decompress ---
let mut decompressed_buf = vec![0u8; input.len()];
let (decompressed, rc) =
    decompress_slice(&mut decompressed_buf, compressed, InflateConfig::default());
assert_eq!(rc, ReturnCode::Ok);

assert_eq!(decompressed, input);

Dependencies

~0–1.4MB
~26K SLoC