async-recursion = "1.0.0"
async-trait = "0.1.60"
byteorder = "1.4.3"
+delegate = "0.9.0"
num_enum = "0.5.7"
thiserror = "1.0.38"
tokio = { version = "1.23.0", features = ["sync", "time", "net", "signal", "macros", "rt"] }
pub use prelude::*;
use async_trait::async_trait;
+use delegate::delegate;
use num_enum::TryFromPrimitive;
-use std::{cell::OnceCell, collections::HashMap, io, ops, sync::Arc, time::Instant};
+use std::{cell::OnceCell, collections::HashMap, io, sync::Arc, time::Instant};
use tokio::{
sync::{mpsc, watch, Mutex, RwLock},
task::JoinSet,
impl_share!(RudpReceiver);
impl_share!(RudpSender);
-impl<S: UdpSender> ops::Deref for RudpReceiver<S> {
- type Target = mpsc::UnboundedReceiver<InPkt>;
-
- fn deref(&self) -> &Self::Target {
- &self.pkt_rx
- }
-}
-
-impl<S: UdpSender> ops::DerefMut for RudpReceiver<S> {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.pkt_rx
+impl<S: UdpSender> RudpReceiver<S> {
+ delegate! {
+ to self.pkt_rx {
+ pub async fn recv(&mut self) -> Option<InPkt>;
+ }
}
}