use crate::{codec::Codec, context::Context, transport::Result}; pub trait PacketReceiver: Send + Sync { fn recv>(&self, ctx: &Context) -> Result<(Uid, P)>; } pub trait PacketReceiverBuf: Send + Sync { fn recv_buf(&self, ctx: &Context) -> Result<(Uid, Vec)>; } impl> PacketReceiver for R { fn recv>(&self, ctx: &Context) -> Result<(Uid, P)> { let (uid, bytes) = self.recv_buf(ctx)?; let mut reader = bytes.as_slice(); let packet = P::decode(&mut reader, ctx)?; Ok((uid, packet)) } }