use crate::transport::{ connection::Connection, listener::Listener, receiver::PacketReceiver, sender::PacketSender, }; #[cfg(feature = "tcp")] pub mod tcp; #[cfg(feature = "udp")] pub mod udp; pub mod connection; pub mod error; pub mod listener; pub mod receiver; pub mod sender; pub use crate::transport::error::TransportError; pub type Result = std::result::Result; pub trait Transport: Send + Sync where Uid: PartialEq, { type Data; type Addr; type Sender: PacketSender + Clone; type Receiver: PacketReceiver; type Listener: Listener; fn connect(&self, addr: Self::Addr) -> Result>; fn listen(&self, addr: Self::Addr) -> Result; } /// Convenience alias for the [`Connection`] produced by a [`Transport`]. pub type ConnectionOf = Connection< Uid, >::Data, >::Sender, >::Receiver, >;