compression_codecs/bzip2/
params.rs1use std::convert::TryInto;
2
3use bzip2::Compression;
4use compression_core::Level;
5
6#[derive(Debug)]
7pub struct Bzip2EncoderParams {
8 inner: Compression,
9}
10
11impl From<Bzip2EncoderParams> for Compression {
12 fn from(value: Bzip2EncoderParams) -> Self {
13 value.inner
14 }
15}
16impl From<Level> for Bzip2EncoderParams {
17 fn from(value: Level) -> Self {
18 let fastest = bzip2::Compression::fast();
19 let best = bzip2::Compression::best();
20
21 let inner = match value {
22 Level::Fastest => fastest,
23 Level::Best => best,
24 Level::Precise(quality) => bzip2::Compression::new(
25 quality
26 .try_into()
27 .unwrap_or(0)
28 .clamp(fastest.level(), best.level()),
29 ),
30 _ => bzip2::Compression::default(),
31 };
32 Self { inner }
33 }
34}