Auto merge of #88220 - sunfishcode:sunfishcode/unix-listener-io-safety, r=joshtriplett
Implement `AsFd` etc. for `UnixListener`. Implement `AsFd`, `From<OwnedFd>`, and `Into<OwnedFd>` for `UnixListener`. This is a follow-up to #87329. r? `@joshtriplett`
This commit is contained in:
commit
33fdb797f5
@ -1,5 +1,5 @@
|
|||||||
use super::{sockaddr_un, SocketAddr, UnixStream};
|
use super::{sockaddr_un, SocketAddr, UnixStream};
|
||||||
use crate::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
|
use crate::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
|
||||||
use crate::path::Path;
|
use crate::path::Path;
|
||||||
use crate::sys::cvt;
|
use crate::sys::cvt;
|
||||||
use crate::sys::net::Socket;
|
use crate::sys::net::Socket;
|
||||||
@ -262,6 +262,30 @@ impl IntoRawFd for UnixListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
|
impl AsFd for UnixListener {
|
||||||
|
#[inline]
|
||||||
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
|
self.0.as_inner().as_fd()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
|
impl From<OwnedFd> for UnixListener {
|
||||||
|
#[inline]
|
||||||
|
fn from(fd: OwnedFd) -> UnixListener {
|
||||||
|
UnixListener(Socket::from_inner(FromInner::from_inner(fd)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
|
impl From<UnixListener> for OwnedFd {
|
||||||
|
#[inline]
|
||||||
|
fn from(listener: UnixListener) -> OwnedFd {
|
||||||
|
listener.0.into_inner().into_inner()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[stable(feature = "unix_socket", since = "1.10.0")]
|
#[stable(feature = "unix_socket", since = "1.10.0")]
|
||||||
impl<'a> IntoIterator for &'a UnixListener {
|
impl<'a> IntoIterator for &'a UnixListener {
|
||||||
type Item = io::Result<UnixStream>;
|
type Item = io::Result<UnixStream>;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user