foodshare_compression/
lib.rs1mod brotli_impl;
9mod gzip;
10mod etag;
11mod error;
12
13#[cfg(feature = "wasm")]
14mod wasm;
15
16pub use brotli_impl::{brotli_compress, brotli_decompress};
17pub use gzip::{gzip_compress, gzip_decompress, deflate_compress, deflate_decompress};
18pub use etag::generate_etag;
19pub use error::{CompressionError, Result};
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum Algorithm {
24 Brotli,
26 Gzip,
28 Deflate,
30}
31
32pub fn compress(data: &[u8], algorithm: Algorithm, level: u32) -> Result<Vec<u8>> {
34 match algorithm {
35 Algorithm::Brotli => brotli_compress(data, level),
36 Algorithm::Gzip => gzip_compress(data, level),
37 Algorithm::Deflate => deflate_compress(data, level),
38 }
39}
40
41pub fn decompress(data: &[u8], algorithm: Algorithm) -> Result<Vec<u8>> {
43 match algorithm {
44 Algorithm::Brotli => brotli_decompress(data),
45 Algorithm::Gzip => gzip_decompress(data),
46 Algorithm::Deflate => deflate_decompress(data),
47 }
48}