this repo has no description
1mod brotli;
2mod bzip2;
3mod gzip;
4mod lz4;
5mod lzma;
6mod pipeline;
7mod snappy;
8mod stream;
9mod tar;
10mod xz;
11mod zip;
12mod zstd;
13
14pub use brotli::{Brotli, BrotliArgs};
15pub use bzip2::{Bzip2, Bzip2Args};
16pub use gzip::{Gzip, GzipArgs};
17pub use lz4::{Lz4, Lz4Args};
18pub use lzma::{Lzma, LzmaArgs};
19pub use pipeline::Pipeline;
20pub use snappy::{Snappy, SnappyArgs};
21pub use tar::{Tar, TarArgs};
22pub use xz::{Xz, XzArgs};
23pub use zip::{Zip, ZipArgs};
24pub use zstd::{Zstd, ZstdArgs};
25
26use crate::utils::Compressor;
27
28/// Create a default compressor instance from an extension or name string.
29/// This is the single canonical lookup table for all compressor types.
30pub fn compressor_from_str(s: &str) -> Option<Box<dyn Compressor>> {
31 match s {
32 "tar" => Some(Box::<Tar>::default()),
33 "gzip" | "gz" => Some(Box::<Gzip>::default()),
34 "xz" => Some(Box::<Xz>::default()),
35 "bzip2" | "bz2" => Some(Box::<Bzip2>::default()),
36 "zip" => Some(Box::<Zip>::default()),
37 "zstd" | "zst" => Some(Box::<Zstd>::default()),
38 "lz4" => Some(Box::<Lz4>::default()),
39 "brotli" | "br" => Some(Box::<Brotli>::default()),
40 "snappy" | "sz" => Some(Box::<Snappy>::default()),
41 "lzma" => Some(Box::<Lzma>::default()),
42 _ => None,
43 }
44}