monoio/io/
as_fd.rs

1//! We impl AsReadFd and AsWriteFd for some structs.
2
3use crate::driver::shared_fd::SharedFd;
4
5/// Get a readable shared fd from self.
6pub trait AsReadFd {
7    /// Get fd.
8    fn as_reader_fd(&mut self) -> &SharedFdWrapper;
9}
10
11/// Get a writable shared fd from self.
12pub trait AsWriteFd {
13    /// Get fd.
14    fn as_writer_fd(&mut self) -> &SharedFdWrapper;
15}
16
17/// A wrapper of SharedFd to solve pub problem.
18#[repr(transparent)]
19pub struct SharedFdWrapper(SharedFd);
20
21impl SharedFdWrapper {
22    #[allow(unused)]
23    pub(crate) fn as_ref(&self) -> &SharedFd {
24        &self.0
25    }
26
27    pub(crate) fn new(inner: &SharedFd) -> &Self {
28        unsafe { std::mem::transmute(inner) }
29    }
30}