aboutsummaryrefslogtreecommitdiff
path: root/crates/rsli/src/compress/deflate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/rsli/src/compress/deflate.rs')
-rw-r--r--crates/rsli/src/compress/deflate.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/rsli/src/compress/deflate.rs b/crates/rsli/src/compress/deflate.rs
new file mode 100644
index 0000000..6b8ea73
--- /dev/null
+++ b/crates/rsli/src/compress/deflate.rs
@@ -0,0 +1,14 @@
+use crate::error::Error;
+use crate::Result;
+use flate2::read::DeflateDecoder;
+use std::io::Read;
+
+/// Decode raw Deflate (RFC 1951) payload.
+pub fn decode_deflate(packed: &[u8]) -> Result<Vec<u8>> {
+ let mut out = Vec::new();
+ let mut decoder = DeflateDecoder::new(packed);
+ decoder
+ .read_to_end(&mut out)
+ .map_err(|_| Error::DecompressionFailed("deflate"))?;
+ Ok(out)
+}