Implement AsHandle
/AsSocket
for Arc
/Rc
/Box
on Windows
Implement the Windows counterpart to #97437 and #107317: Implement `AsHandle` and `AsSocket` for `Arc<T>`, `Rc<T>`, and `Box<T>`.
This commit is contained in:
parent
9aa5c24b7d
commit
a117c50b8c
@ -437,6 +437,42 @@ fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
/// This impl allows implementing traits that require `AsHandle` on Arc.
|
||||
/// ```
|
||||
/// # #[cfg(windows)] mod group_cfg {
|
||||
/// # use std::os::windows::io::AsHandle;
|
||||
/// use std::fs::File;
|
||||
/// use std::sync::Arc;
|
||||
///
|
||||
/// trait MyTrait: AsHandle {}
|
||||
/// impl MyTrait for Arc<File> {}
|
||||
/// impl MyTrait for Box<File> {}
|
||||
/// # }
|
||||
/// ```
|
||||
impl<T: AsHandle> AsHandle for crate::sync::Arc<T> {
|
||||
#[inline]
|
||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||
(**self).as_handle()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T: AsHandle> AsHandle for crate::rc::Rc<T> {
|
||||
#[inline]
|
||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||
(**self).as_handle()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T: AsHandle> AsHandle for Box<T> {
|
||||
#[inline]
|
||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||
(**self).as_handle()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "io_safety", since = "1.63.0")]
|
||||
impl AsHandle for BorrowedHandle<'_> {
|
||||
#[inline]
|
||||
|
@ -247,6 +247,42 @@ fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
/// This impl allows implementing traits that require `AsSocket` on Arc.
|
||||
/// ```
|
||||
/// # #[cfg(windows)] mod group_cfg {
|
||||
/// # use std::os::windows::io::AsSocket;
|
||||
/// use std::net::UdpSocket;
|
||||
/// use std::sync::Arc;
|
||||
///
|
||||
/// trait MyTrait: AsSocket {}
|
||||
/// impl MyTrait for Arc<UdpSocket> {}
|
||||
/// impl MyTrait for Box<UdpSocket> {}
|
||||
/// # }
|
||||
/// ```
|
||||
impl<T: AsSocket> AsSocket for crate::sync::Arc<T> {
|
||||
#[inline]
|
||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||
(**self).as_socket()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T: AsSocket> AsSocket for crate::rc::Rc<T> {
|
||||
#[inline]
|
||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||
(**self).as_socket()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "as_windows_ptrs", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T: AsSocket> AsSocket for Box<T> {
|
||||
#[inline]
|
||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||
(**self).as_socket()
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "io_safety", since = "1.63.0")]
|
||||
impl AsSocket for BorrowedSocket<'_> {
|
||||
#[inline]
|
||||
|
Loading…
Reference in New Issue
Block a user