소스 검색

Make `AnySocket` object safe

Signed-off-by: Klim Tsoutsman <klim@tsoutsman.com>
Klim Tsoutsman 2 년 전
부모
커밋
24af392a25
1개의 변경된 파일10개의 추가작업 그리고 4개의 파일을 삭제
  1. 10 4
      src/socket/mod.rs

+ 10 - 4
src/socket/mod.rs

@@ -91,10 +91,16 @@ impl<'a> Socket<'a> {
 }
 
 /// A conversion trait for network sockets.
-pub trait AnySocket<'a>: Sized {
-    fn upcast(self) -> Socket<'a>;
-    fn downcast<'c>(socket: &'c Socket<'a>) -> Option<&'c Self>;
-    fn downcast_mut<'c>(socket: &'c mut Socket<'a>) -> Option<&'c mut Self>;
+pub trait AnySocket<'a> {
+    fn upcast(self) -> Socket<'a>
+    where
+        Self: Sized;
+    fn downcast<'c>(socket: &'c Socket<'a>) -> Option<&'c Self>
+    where
+        Self: Sized;
+    fn downcast_mut<'c>(socket: &'c mut Socket<'a>) -> Option<&'c mut Self>
+    where
+        Self: Sized;
 }
 
 macro_rules! from_socket {