1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use std::fmt;
use nom::{
IResult,
branch::alt,
combinator::map,
bytes::complete::tag
};
#[derive(Debug, PartialEq, Clone)]
pub enum SdpNetworkType {
Internet,
Telephone,
Atm,
Pstn
}
pub fn parse_network_type(input: &[u8]) -> IResult<&[u8], SdpNetworkType> {
alt((
map(tag("IN"), |_| SdpNetworkType::Internet),
map(tag("TN"), |_| SdpNetworkType::Telephone),
map(tag("ATM"), |_| SdpNetworkType::Atm),
map(tag("PSTN"), |_| SdpNetworkType::Pstn)
))(input)
}
impl fmt::Display for SdpNetworkType {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
SdpNetworkType::Internet => write!(f, "IN"),
SdpNetworkType::Telephone => write!(f, "TN"),
SdpNetworkType::Atm => write!(f, "ATM"),
SdpNetworkType::Pstn => write!(f, "PSTN")
}
}
}