From 356b6be3f4062fc9dd1d02e87f54657bd833ead4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Th=C3=A9riault?= Date: Thu, 23 Oct 2025 21:26:00 -0400 Subject: [PATCH] impl AnySocket for Socket --- src/socket/mod.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/socket/mod.rs b/src/socket/mod.rs index ecf72dcda..6df3e1739 100644 --- a/src/socket/mod.rs +++ b/src/socket/mod.rs @@ -102,6 +102,29 @@ pub trait AnySocket<'a> { Self: Sized; } +impl<'a> AnySocket<'a> for Socket<'a> { + #[inline] + fn upcast(self) -> Socket<'a> { + self + } + + #[inline] + fn downcast<'c>(socket: &'c Socket<'a>) -> Option<&'c Self> + where + Self: Sized, + { + Some(socket) + } + + #[inline] + fn downcast_mut<'c>(socket: &'c mut Socket<'a>) -> Option<&'c mut Self> + where + Self: Sized, + { + Some(socket) + } +} + macro_rules! from_socket { ($socket:ty, $variant:ident) => { impl<'a> AnySocket<'a> for $socket {