sevenz_rust/
method_options.rs

1#[cfg(feature = "compress")]
2use lzma_rust::LZMA2Options;
3
4#[cfg(feature = "aes256")]
5use crate::aes256sha256::AesEncoderOptions;
6use std::fmt::Debug;
7
8#[derive(Debug, Clone)]
9pub enum MethodOptions {
10    Num(u32),
11    #[cfg(feature = "compress")]
12    LZMA2(crate::lzma::LZMA2Options),
13    #[cfg(feature = "aes256")]
14    Aes(AesEncoderOptions),
15}
16
17#[cfg(feature = "aes256")]
18impl From<AesEncoderOptions> for MethodOptions {
19    fn from(value: AesEncoderOptions) -> Self {
20        Self::Aes(value)
21    }
22}
23#[cfg(feature = "aes256")]
24impl From<AesEncoderOptions> for crate::SevenZMethodConfiguration {
25    fn from(value: AesEncoderOptions) -> Self {
26        Self::new(crate::SevenZMethod::AES256SHA256).with_options(MethodOptions::Aes(value))
27    }
28}
29
30#[cfg(feature = "compress")]
31impl From<LZMA2Options> for crate::SevenZMethodConfiguration {
32    fn from(value: LZMA2Options) -> Self {
33        Self::new(crate::SevenZMethod::LZMA2).with_options(MethodOptions::LZMA2(value))
34    }
35}
36
37impl From<u32> for MethodOptions {
38    fn from(n: u32) -> Self {
39        Self::Num(n)
40    }
41}
42
43#[cfg(feature = "compress")]
44impl From<crate::lzma::LZMA2Options> for MethodOptions {
45    fn from(o: crate::lzma::LZMA2Options) -> Self {
46        Self::LZMA2(o)
47    }
48}
49
50impl MethodOptions {
51    pub fn get_lzma2_dict_size(&self) -> u32 {
52        match self {
53            MethodOptions::Num(n) => *n,
54            #[cfg(feature = "compress")]
55            MethodOptions::LZMA2(o) => o.dict_size,
56            #[allow(unused)]
57            _ => 0,
58        }
59    }
60}