use super::{error::NaiaClientSocketError, server_addr::ServerAddr};
pub trait PacketReceiver: PacketReceiverClone + Send + Sync {
fn receive(&mut self) -> Result<Option<&[u8]>, NaiaClientSocketError>;
fn server_addr(&self) -> ServerAddr;
}
pub trait PacketReceiverClone {
fn clone_box(&self) -> Box<dyn PacketReceiver>;
}
impl<T: 'static + PacketReceiver + Clone> PacketReceiverClone for T {
fn clone_box(&self) -> Box<dyn PacketReceiver> {
Box::new(self.clone())
}
}
impl Clone for Box<dyn PacketReceiver> {
fn clone(&self) -> Box<dyn PacketReceiver> {
PacketReceiverClone::clone_box(self.as_ref())
}
}