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