sevenz_rust2/
method_options.rs1#[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}