naia_client_socket/
packet_receiver.rs1use super::{error::NaiaClientSocketError, server_addr::ServerAddr};
2
3pub trait PacketReceiver: PacketReceiverClone + Send + Sync {
5 fn receive(&mut self) -> Result<Option<&[u8]>, NaiaClientSocketError>;
7 fn server_addr(&self) -> ServerAddr;
9}
10
11pub trait PacketReceiverClone {
13 fn clone_box(&self) -> Box<dyn PacketReceiver>;
15}
16
17impl<T: 'static + PacketReceiver + Clone> PacketReceiverClone for T {
18 fn clone_box(&self) -> Box<dyn PacketReceiver> {
19 Box::new(self.clone())
20 }
21}
22
23impl Clone for Box<dyn PacketReceiver> {
24 fn clone(&self) -> Box<dyn PacketReceiver> {
25 PacketReceiverClone::clone_box(self.as_ref())
26 }
27}