diff options
| author | Tomoaki Kawada <kawada@kmckk.co.jp> | 2023-08-23 16:46:26 +0900 |
|---|---|---|
| committer | Tomoaki Kawada <kawada@kmckk.co.jp> | 2023-11-08 10:48:49 +0900 |
| commit | 0dd3b25e2d96f953e5087d9405893ca777ebeaec (patch) | |
| tree | 293220b13f424db5066190aba7cad97d3fbbf02e /library/std/src | |
| parent | cf9c4a32f3293dc3acd2149248880d15d922c7a6 (diff) | |
| download | rust-0dd3b25e2d96f953e5087d9405893ca777ebeaec.tar.gz rust-0dd3b25e2d96f953e5087d9405893ca777ebeaec.zip | |
kmc-solid: Implement `AsFd` for `{Arc,Rc,Box}<impl AsFd>`
Diffstat (limited to 'library/std/src')
| -rw-r--r-- | library/std/src/os/solid/io.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/library/std/src/os/solid/io.rs b/library/std/src/os/solid/io.rs index 67fc94830d0..683edc1ca85 100644 --- a/library/std/src/os/solid/io.rs +++ b/library/std/src/os/solid/io.rs @@ -271,6 +271,39 @@ macro_rules! impl_owned_fd_traits { } impl_owned_fd_traits! { TcpStream TcpListener UdpSocket } +/// This impl allows implementing traits that require `AsFd` on Arc. +/// ``` +/// # #[cfg(target_os = "solid_asp3")] mod group_cfg { +/// # use std::os::solid::io::AsFd; +/// use std::net::UdpSocket; +/// use std::sync::Arc; +/// +/// trait MyTrait: AsFd {} +/// impl MyTrait for Arc<UdpSocket> {} +/// impl MyTrait for Box<UdpSocket> {} +/// # } +/// ``` +impl<T: AsFd> AsFd for crate::sync::Arc<T> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + (**self).as_fd() + } +} + +impl<T: AsFd> AsFd for crate::rc::Rc<T> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + (**self).as_fd() + } +} + +impl<T: AsFd> AsFd for Box<T> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + (**self).as_fd() + } +} + /// A trait to extract the raw SOLID Sockets file descriptor from an underlying /// object. pub trait AsRawFd { |
