uniform_resource_identifier/uri/authority/port/
mod.rs

1use crate::Scheme;
2
3#[derive(Debug, Clone, PartialEq)]
4pub enum Port {
5    Http,
6    Https,
7    Port(usize),
8}
9
10impl From<Port> for Scheme {
11    fn from(port: Port) -> Scheme {
12        match port {
13            Port::Http => Scheme::Http,
14            Port::Https => Scheme::Https,
15            _ => panic!("cast port {:?} to scheme", port),
16        }
17    }
18}
19
20impl ToString for Port {
21    fn to_string(&self) -> String {
22        match self {
23            Port::Http => String::from("80"),
24            Port::Https => String::from("443"),
25            Port::Port(port) => port.clone().to_string(),
26        }
27    }
28}
29
30#[cfg(test)]
31mod test_port {
32    use crate::{Port, Scheme};
33
34    #[test]
35    fn port_to_scheme() {
36        let port = Port::Http;
37        let scheme: Scheme = port.into();
38        assert_eq!(scheme, Scheme::Http);
39    }
40
41    #[test]
42    fn port_to_string() {
43        let port = Port::Http;
44        assert_eq!(port.to_string(), "80");
45    }
46}