rasn/ber/de/
config.rs

1use crate::ber::EncodingRules;
2
3/// The options for the [`Decoder`][super::Decoder].
4#[derive(Clone, Copy, Debug)]
5pub struct DecoderOptions {
6    pub(crate) encoding_rules: EncodingRules,
7}
8
9impl DecoderOptions {
10    /// Return the default configuration for BER.
11    #[must_use]
12    pub const fn ber() -> Self {
13        Self {
14            encoding_rules: EncodingRules::Ber,
15        }
16    }
17
18    /// Return the default configuration for CER.
19    #[must_use]
20    pub const fn cer() -> Self {
21        Self {
22            encoding_rules: EncodingRules::Cer,
23        }
24    }
25
26    /// Return the default configuration for DER.
27    #[must_use]
28    pub const fn der() -> Self {
29        Self {
30            encoding_rules: EncodingRules::Der,
31        }
32    }
33
34    /// Returns the currently selected codec.
35    #[must_use]
36    pub fn current_codec(&self) -> crate::Codec {
37        match self.encoding_rules {
38            EncodingRules::Ber => crate::Codec::Ber,
39            EncodingRules::Cer => crate::Codec::Cer,
40            EncodingRules::Der => crate::Codec::Der,
41        }
42    }
43}