use std::fmt::Display; use serde::Deserialize; use crate::{Error, Status}; #[derive(Debug, Clone, Deserialize)] pub struct Tcp { pub address: String, } impl Display for Tcp { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "tcp://{}", self.address) } } impl Tcp { pub async fn check(&self) -> Result { Ok(std::net::TcpStream::connect(&self.address) .err() .map(Into::into) .unwrap_or_default()) } }