async_rs/sys/
unix.rs

1use std::os::unix::io::{AsFd, AsRawFd};
2
3/// Abstract trait on top of AsFd + AsRawFd or AsSocket + AsRawSocket for unix or windows
4pub trait AsSysFd: AsFd + AsRawFd {}
5impl<H: AsFd + AsRawFd> 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::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd},
13    };
14
15    impl<H: Read + Write + AsSysFd + Send + 'static> AsFd for IOHandle<H> {
16        fn as_fd(&self) -> BorrowedFd<'_> {
17            self.0.as_fd()
18        }
19    }
20
21    impl<H: Read + Write + AsSysFd + Send + 'static> AsRawFd for IOHandle<H> {
22        fn as_raw_fd(&self) -> RawFd {
23            self.as_fd().as_raw_fd()
24        }
25    }
26}