Rust libz_sys 板条箱 - Z_VERSION_ERROR?

Rust libz_sys crate - Z_VERSION_ERROR?

我在 Rust 项目中使用 libz_sys crate,我有以下代码(断章取义):

let mut in_data = data.to_owned();
let mut next_out = Vec::with_capacity(in_data.len());
let msg = CString::new("").unwrap();
let mut state = mem::uninitialized();
let mut zstream = libz_sys::z_stream {
    next_in: in_data.as_mut_ptr(),
    avail_in: 0,
    total_in: 0,
    next_out: next_out.as_mut_ptr(),
    avail_out: 0,
    total_out: 0,
    msg: msg.into_raw(),
    state: &mut state,
    zalloc: mem::uninitialized(),
    zfree: mem::uninitialized(),
    opaque: mem::uninitialized(),
    data_type: 0,
    adler: 0,
    reserved: 0,
};
match libz_sys::inflateInit_(&mut zstream, libz_sys::zlibVersion(), data.len() as raw::c_int) {
    libz_sys::Z_OK => (),
    e => return Err(format!("Error decoding idat: Error code {}", e))
}

但是当我运行这段代码时,inflateInit_返回错误代码-6:Z_VERSION_ERROR,这表明zlib.h版本与libz 被链接。有谁知道这是否是这个板条箱的预期错误或如何修复它? libz_sys crate 没有文档,但是我不能使用像 flate2 这样的更高级别的 crate,因为我需要能够将压缩选项传递给 libz。我正在开发 OS X 10.11 和 Rust 1.7-nightly,如果相关的话。

inflateInit_()的第三个参数是z_stream结构的大小,而不是数据的长度。