use crate::file_io::sys;
use crate::fs;
use crate::file_io::sys_common::{AsInner, FromInner, IntoInner};
use crate::libc;
pub type RawFd = libc::c_int;
pub trait AsRawFd {
fn as_raw_fd(&self) -> RawFd;
}
pub trait FromRawFd {
unsafe fn from_raw_fd(fd: RawFd) -> Self;
}
pub trait IntoRawFd {
fn into_raw_fd(self) -> RawFd;
}
impl AsRawFd for fs::File {
fn as_raw_fd(&self) -> RawFd {
self.as_inner().fd().raw()
}
}
impl FromRawFd for fs::File {
unsafe fn from_raw_fd(fd: RawFd) -> fs::File {
fs::File::from_inner(sys::fs::File::from_inner(fd))
}
}
impl IntoRawFd for fs::File {
fn into_raw_fd(self) -> RawFd {
self.into_inner().into_fd().into_raw()
}
}