kumo_dmarc/types/
mode.rs

1use instant_xml::ToXml;
2use std::str::FromStr;
3
4#[derive(Clone, Copy, Debug, Eq, PartialEq, ToXml)]
5#[xml(scalar)]
6pub enum Mode {
7    Relaxed,
8    Strict,
9}
10
11impl From<Mode> for char {
12    fn from(value: Mode) -> Self {
13        match value {
14            Mode::Relaxed => 'r',
15            Mode::Strict => 's',
16        }
17    }
18}
19
20impl FromStr for Mode {
21    type Err = String;
22
23    fn from_str(value: &str) -> Result<Self, Self::Err> {
24        Ok(match value {
25            "r" => Self::Relaxed,
26            "s" => Self::Strict,
27            _ => return Err(format!("invalid mode {value:?}")),
28        })
29    }
30}