sevenz_rust2/
method_options.rs

1#[cfg(feature = "compress")]
2use lzma_rust2::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(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
24#[cfg(feature = "aes256")]
25impl From<AesEncoderOptions> for crate::SevenZMethodConfiguration {
26    fn from(value: AesEncoderOptions) -> Self {
27        Self::new(crate::SevenZMethod::AES256SHA256).with_options(MethodOptions::Aes(value))
28    }
29}
30
31#[cfg(feature = "compress")]
32impl From<LZMA2Options> for crate::SevenZMethodConfiguration {
33    fn from(value: LZMA2Options) -> Self {
34        Self::new(crate::SevenZMethod::LZMA2).with_options(MethodOptions::LZMA2(value))
35    }
36}
37
38impl From<u32> for MethodOptions {
39    fn from(n: u32) -> Self {
40        Self::Num(n)
41    }
42}
43
44#[cfg(feature = "compress")]
45impl From<LZMA2Options> for MethodOptions {
46    fn from(o: LZMA2Options) -> Self {
47        Self::LZMA2(o)
48    }
49}
50
51impl MethodOptions {
52    pub fn get_lzma2_dict_size(&self) -> u32 {
53        match self {
54            MethodOptions::Num(n) => *n,
55            #[cfg(feature = "compress")]
56            MethodOptions::LZMA2(o) => o.dict_size,
57            #[allow(unused)]
58            _ => 0,
59        }
60    }
61}