racker_common/
data.rs

1use std::net::SocketAddr;
2use serde::{Serialize, Deserialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "kebab-case")]
6pub struct Network {
7    host: String,
8    port: u16,
9}
10
11impl Network {
12    pub fn new(host: &str, port: u16) -> Self {
13        Self {
14            host: host.to_string(),
15            port,
16        }
17    }
18}
19
20impl Network {
21    pub fn host(&self) -> &str {
22        &self.host
23    }
24
25    pub fn port(&self) -> u16 {
26        self.port
27    }
28
29    pub fn as_socket_addr(&self) -> SocketAddr {
30        SocketAddr::new(self.host.parse().unwrap(), self.port)
31    }
32}
33
34impl From<SocketAddr> for Network {
35    fn from(value: SocketAddr) -> Self {
36        Self {
37            host: value.ip().to_string(),
38            port: value.port(),
39        }
40    }
41}