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}