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}