archivelib/
lib.rs

1#![deny(clippy::cargo)]
2#![deny(clippy::fallible_impl_from)]
3#![deny(clippy::restriction::wrong_pub_self_convention)]
4#![deny(clippy::style::assertions_on_constants)]
5#![deny(clippy::style::wrong_self_convention)]
6#![deny(clippy::unseparated_literal_suffix)]
7#![warn(clippy::pedantic)]
8// #![allow(clippy::cargo_common_metadata)]
9// #![allow(clippy::cognitive_complexity)]
10// #![allow(clippy::module_name_repetitions)]
11// #![allow(clippy::needless_pass_by_value)]
12// #![allow(clippy::non_ascii_literal)]
13// #![allow(clippy::too_many_arguments)]
14// #![allow(clippy::too_many_lines)]
15
16#[macro_use]
17extern crate failure_derive;
18use failure;
19
20#[macro_use]
21mod support;
22
23#[cfg(test)]
24#[macro_use]
25mod test;
26
27mod level;
28
29#[cfg(not(feature = "new_impl"))]
30mod expand;
31#[cfg(feature = "new_impl")]
32mod expand_new;
33
34mod compress;
35mod config;
36mod consts;
37mod errors;
38
39pub use self::config::ArchivelibConfig;
40pub use self::errors::*;
41pub use self::level::CompressionLevel;
42
43#[cfg(feature = "sys")]
44pub mod sys {
45  pub use archivelib_sys::{do_compress, do_compress_level, do_decompress, do_decompress_level};
46}
47
48pub fn do_compress(input: &[u8]) -> Result<Box<[u8]>, std::string::String> {
49  ArchivelibConfig::default()
50    .compress(input)
51    .map_err(|err| format!("{}", err))
52}
53
54pub fn do_compress_level(
55  input: &[u8],
56  compression_level: CompressionLevel,
57) -> Result<Box<[u8]>, std::string::String> {
58  (ArchivelibConfig {
59    level: compression_level,
60    ..ArchivelibConfig::default()
61  })
62  .compress(input)
63  .map_err(|err| format!("{}", err))
64}
65
66pub fn do_decompress(input: &[u8]) -> Result<Box<[u8]>, std::string::String> {
67  ArchivelibConfig::default()
68    .decompress(input)
69    .map_err(|err| format!("{}", err))
70}
71
72pub fn do_decompress_level(
73  input: &[u8],
74  compression_level: CompressionLevel,
75) -> Result<Box<[u8]>, std::string::String> {
76  (ArchivelibConfig {
77    level: compression_level,
78    ..ArchivelibConfig::default()
79  })
80  .decompress(input)
81  .map_err(|err| format!("{}", err))
82}