#![doc(html_root_url = "https://docs.rs/flate2/0.2")]
#![deny(missing_docs)]
#![deny(missing_debug_implementations)]
#![allow(trivial_numeric_casts)]
#![cfg_attr(test, deny(warnings))]
extern crate crc32fast;
#[cfg(feature = "tokio")]
extern crate futures;
#[cfg(not(all(target_arch = "wasm32", not(target_os = "emscripten"))))]
extern crate libc;
#[cfg(test)]
extern crate quickcheck;
#[cfg(test)]
extern crate rand;
#[cfg(feature = "tokio")]
extern crate tokio_io;
#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))]
mod libc {
#![allow(non_camel_case_types)]
pub type c_ulong = u64;
pub type off_t = i64;
pub type c_int = i32;
pub type c_uint = u32;
pub type size_t = usize;
}
pub use crc::{Crc, CrcReader, CrcWriter};
pub use gz::GzBuilder;
pub use gz::GzHeader;
pub use mem::{Compress, CompressError, Decompress, DecompressError, Status};
pub use mem::{FlushCompress, FlushDecompress};
mod bufreader;
mod crc;
mod deflate;
mod ffi;
mod gz;
mod mem;
mod zio;
mod zlib;
pub mod read {
pub use deflate::read::DeflateDecoder;
pub use deflate::read::DeflateEncoder;
pub use gz::read::GzDecoder;
pub use gz::read::GzEncoder;
pub use gz::read::MultiGzDecoder;
pub use zlib::read::ZlibDecoder;
pub use zlib::read::ZlibEncoder;
}
pub mod write {
pub use deflate::write::DeflateDecoder;
pub use deflate::write::DeflateEncoder;
pub use gz::write::GzDecoder;
pub use gz::write::GzEncoder;
pub use zlib::write::ZlibDecoder;
pub use zlib::write::ZlibEncoder;
}
pub mod bufread {
pub use deflate::bufread::DeflateDecoder;
pub use deflate::bufread::DeflateEncoder;
pub use gz::bufread::GzDecoder;
pub use gz::bufread::GzEncoder;
pub use gz::bufread::MultiGzDecoder;
pub use zlib::bufread::ZlibDecoder;
pub use zlib::bufread::ZlibEncoder;
}
fn _assert_send_sync() {
fn _assert_send_sync<T: Send + Sync>() {}
_assert_send_sync::<read::DeflateEncoder<&[u8]>>();
_assert_send_sync::<read::DeflateDecoder<&[u8]>>();
_assert_send_sync::<read::ZlibEncoder<&[u8]>>();
_assert_send_sync::<read::ZlibDecoder<&[u8]>>();
_assert_send_sync::<read::GzEncoder<&[u8]>>();
_assert_send_sync::<read::GzDecoder<&[u8]>>();
_assert_send_sync::<read::MultiGzDecoder<&[u8]>>();
_assert_send_sync::<write::DeflateEncoder<Vec<u8>>>();
_assert_send_sync::<write::DeflateDecoder<Vec<u8>>>();
_assert_send_sync::<write::ZlibEncoder<Vec<u8>>>();
_assert_send_sync::<write::ZlibDecoder<Vec<u8>>>();
_assert_send_sync::<write::GzEncoder<Vec<u8>>>();
_assert_send_sync::<write::GzDecoder<Vec<u8>>>();
}
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct Compression(u32);
impl Compression {
pub fn new(level: u32) -> Compression {
Compression(level)
}
pub fn none() -> Compression {
Compression(0)
}
pub fn fast() -> Compression {
Compression(1)
}
pub fn best() -> Compression {
Compression(9)
}
pub fn level(&self) -> u32 {
self.0
}
}
impl Default for Compression {
fn default() -> Compression {
Compression(6)
}
}
#[cfg(test)]
fn random_bytes() -> impl Iterator<Item = u8> {
use rand::Rng;
use std::iter;
iter::repeat(()).map(|_| rand::thread_rng().gen())
}