async_rs/sys/
unix.rs

1use crate::util::IOHandle;
2use std::{
3    io::{Read, Write},
4    os::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd},
5};
6
7/// Abstract trait on top of Read + Write + AsFd or AsSocket for unix or windows
8pub trait IO: Read + Write + AsFd {}
9impl<H: Read + Write + AsFd> IO for H {}
10
11impl<H: IO + Send + 'static> AsFd for IOHandle<H> {
12    fn as_fd(&self) -> BorrowedFd<'_> {
13        self.0.as_fd()
14    }
15}
16
17impl<H: IO + Send + 'static> AsRawFd for IOHandle<H> {
18    fn as_raw_fd(&self) -> RawFd {
19        self.as_fd().as_raw_fd()
20    }
21}