rasn/ber/enc/
config.rs

1use crate::ber::EncodingRules;
2
3/// Options for configuring the [`Encoder`][super::Encoder].
4#[derive(Clone, Copy, Debug)]
5pub struct EncoderOptions {
6    pub(crate) encoding_rules: EncodingRules,
7}
8
9impl EncoderOptions {
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    #[must_use]
34    pub fn current_codec(&self) -> crate::Codec {
35        match self.encoding_rules {
36            EncodingRules::Ber => crate::Codec::Ber,
37            EncodingRules::Cer => crate::Codec::Cer,
38            EncodingRules::Der => crate::Codec::Der,
39        }
40    }
41}