This crate is a C API for zlib-rs. The API is broadly equivalent to zlib-sys
and zlib-ng-sys
, but does not currently provide the gz*
family of functions.
From a rust perspective, this API is not very ergonomic. Use the flate2
crate for a more
ergonomic rust interface to zlib.
Example
This example compresses ("deflates") the string "Hello, World!"
and then decompresses
("inflates") it again.
let mut strm = default;
let version = zlibVersion;
let stream_size = size_of_val as i32;
let level = 6; // the default compression level
let err = unsafe ;
assert_eq!;
let input = "Hello, World!";
strm.avail_in = input.len as _;
strm.next_in = input.as_ptr;
let mut output = ;
strm.avail_out = output.len as _;
strm.next_out = output.as_mut_ptr;
let err = unsafe ;
assert_eq!;
let err = unsafe ;
assert_eq!;
let deflated = &mut output;
let mut strm = default;
let err = unsafe ;
assert_eq!;
strm.avail_in = deflated.len as _;
strm.next_in = deflated.as_ptr;
let mut output = ;
strm.avail_out = output.len as _;
strm.next_out = output.as_mut_ptr;
let err = unsafe ;
assert_eq!;
let err = unsafe ;
assert_eq!;
let inflated = &output;
assert_eq!