aboutsummaryrefslogtreecommitdiff
path: root/vendor/zune-inflate/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zune-inflate/src/lib.rs')
-rw-r--r--vendor/zune-inflate/src/lib.rs102
1 files changed, 102 insertions, 0 deletions
diff --git a/vendor/zune-inflate/src/lib.rs b/vendor/zune-inflate/src/lib.rs
new file mode 100644
index 0000000..6edc589
--- /dev/null
+++ b/vendor/zune-inflate/src/lib.rs
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2023.
+ *
+ * This software is free software; You can redistribute it or modify it under terms of the MIT, Apache License or Zlib license
+ */
+
+//! An incredibly spiffy deflate decoder.
+//!
+//! This crate features a deflate/zlib decoder inspired by
+//! Eric Bigger's [libdeflate].
+//!
+//! This libary has a smaller set of features hence you should use it
+//! if it aligns with your end goals.
+//!
+//! Use it if
+//! - You want a smaller library footprint when compared to flate/miniz-oxide
+//! - You want faster speeds than zlib-ng/zlib/miniz-oxide.
+//! - You do full buffer decompression and not streaming decompression.
+//! - You don't need compression support for now, it will come soon enough.
+//! - You want a 100% safe, pure rust implementation with above.
+//!
+//!Do not use it if
+//! - You want compression support, not yet there
+//! - You stream your data, not compatible with this library
+//!
+//! ## Alternatives
+//!- For the fastest speeds, check out [libdeflate] (C), if using Rust there is [libdeflater] which
+//! provides bindings to [libdeflate]
+//!
+//!- For streaming support use [flate2-rs] with an appropriate backend(zlib-ng is recommended for speed)
+//!
+//! # Features
+//! You can disable features depending on what you need. the following are
+//! features present
+//! - gzip: Enable gzip decoding
+//! - zlib: Enable zlib decoding
+//!
+//! These features are enabled by default
+//!
+//! To disable a feature , modify Cargo.toml to disable default features
+//! and add the needed feature , e.g below will include zlib decoding and disable gzip decoding
+//! ```toml
+//! zune-inflate={ version="0.2",default-features=false,feature=["zlib"]}
+//! ```
+//!
+//! # Errors
+//! In case of an error, the library returns the error and the decoded
+//! data up to when the error was encountered hence that data can be recovered
+//! but no data further than that can be recovered
+//!
+//!
+//! # Usage
+//!
+//! Decoding delfate data
+//
+//! ```no_run
+//! use zune_inflate::DeflateDecoder;
+//! let totally_valid_data = [0;23];
+//! let mut decoder = DeflateDecoder::new(&totally_valid_data);
+//!
+//! let decompressed =decoder.decode_deflate().unwrap();
+//! ```
+//!
+//! Decoding zlib data
+//! ```no_run
+//! use zune_inflate::DeflateDecoder;
+//! // yea this isn't valid
+//! let totally_valid_data = [0;23];
+//! let mut decoder = DeflateDecoder::new(&totally_valid_data);
+//!
+//! let decompressed =decoder.decode_zlib().unwrap();
+//! ```
+//!
+//! Decoding zlib data without confirming the adler32 checksum
+//! ```no_run
+//! use zune_inflate::DeflateDecoder;
+//! use zune_inflate::DeflateOptions;
+//! let totally_valid_data=[0;23];
+//! let mut options = DeflateOptions::default()
+//! .set_confirm_checksum(false);
+//! let decoder = DeflateDecoder::new_with_options(&totally_valid_data,options);
+//!
+//! ```
+//!
+//! [libdeflate]: https://github.com/ebiggers/libdeflate
+//! [libdeflater]: https://github.com/adamkewley/libdeflater
+//! [flate2-rs]: https://github.com/rust-lang/flate2-rs
+//!
+#![cfg_attr(not(feature = "std"), no_std)]
+extern crate alloc;
+
+pub use crate::decoder::{DeflateDecoder, DeflateOptions};
+pub use crate::encoder::DeflateEncoder;
+
+mod bitstream;
+mod constants;
+mod crc;
+mod decoder;
+mod encoder;
+pub mod errors;
+mod gzip_constants;
+mod utils;