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}