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#[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}