async_rs/sys/
windows.rs

1use std::os::windows::io::{AsRawSocket, AsSocket};
2
3/// Abstract trait on top of AsFd + AsRawFd or AsSocket + AsRawSocket for unix or windows
4pub trait AsSysFd: AsSocket + AsRawSocket {}
5impl<H: AsSocket + AsRawSocket> AsSysFd for H {}
6
7#[cfg(feature = "async-io")]
8mod async_io {
9    use crate::{sys::AsSysFd, util::IOHandle};
10    use std::{
11        io::{Read, Write},
12        os::windows::io::{AsRawSocket, AsSocket, BorrowedSocket, RawSocket},
13    };
14
15    impl<H: Read + Write + AsSysFd + Send + 'static> AsSocket for IOHandle<H> {
16        fn as_socket(&self) -> BorrowedSocket<'_> {
17            self.0.as_socket()
18        }
19    }
20
21    impl<H: Read + Write + AsSysFd + Send + 'static> AsRawSocket for IOHandle<H> {
22        fn as_raw_socket(&self) -> RawSocket {
23            self.0.as_raw_socket()
24        }
25    }
26}