distant_net/client/builder/
tcp.rs

1use std::io;
2
3use async_trait::async_trait;
4use tokio::net::ToSocketAddrs;
5
6use super::Connector;
7use crate::common::TcpTransport;
8
9/// Implementation of [`Connector`] to support connecting via TCP.
10pub struct TcpConnector<T> {
11    addr: T,
12}
13
14impl<T> TcpConnector<T> {
15    pub fn new(addr: T) -> Self {
16        Self { addr }
17    }
18}
19
20impl<T> From<T> for TcpConnector<T> {
21    fn from(addr: T) -> Self {
22        Self::new(addr)
23    }
24}
25
26#[async_trait]
27impl<T: ToSocketAddrs + Send> Connector for TcpConnector<T> {
28    type Transport = TcpTransport;
29
30    async fn connect(self) -> io::Result<Self::Transport> {
31        TcpTransport::connect(self.addr).await
32    }
33}