mirror of
https://github.com/rust-lang/rust
synced 2024-10-19 15:03:55 +00:00
Rollup merge of #93663 - sunfishcode:sunfishcode/as-raw-name, r=joshtriplett
Rename `BorrowedFd::borrow_raw_fd` to `BorrowedFd::borrow_raw`. Also, rename `BorrowedHandle::borrow_raw_handle` and `BorrowedSocket::borrow_raw_socket` to `BorrowedHandle::borrow_raw` and `BorrowedSocket::borrow_raw`. This is just a minor rename to reduce redundancy in the user code calling these functions, and to eliminate an inessential difference between `BorrowedFd` code and `BorrowedHandle`/`BorrowedSocket` code. While here, add a simple test exercising `BorrowedFd::borrow_raw_fd`. r? ``````@joshtriplett``````
This commit is contained in:
commit
c9dc44be24
|
@ -11,3 +11,6 @@
|
||||||
|
|
||||||
// Implementations for `AsRawFd` etc. for network types.
|
// Implementations for `AsRawFd` etc. for network types.
|
||||||
mod net;
|
mod net;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests;
|
||||||
|
|
|
@ -66,7 +66,7 @@ impl BorrowedFd<'_> {
|
||||||
/// the returned `BorrowedFd`, and it must not have the value `-1`.
|
/// the returned `BorrowedFd`, and it must not have the value `-1`.
|
||||||
#[inline]
|
#[inline]
|
||||||
#[unstable(feature = "io_safety", issue = "87074")]
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
pub unsafe fn borrow_raw_fd(fd: RawFd) -> Self {
|
pub unsafe fn borrow_raw(fd: RawFd) -> Self {
|
||||||
assert_ne!(fd, u32::MAX as RawFd);
|
assert_ne!(fd, u32::MAX as RawFd);
|
||||||
// SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned)
|
// SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned)
|
||||||
unsafe { Self { fd, _phantom: PhantomData } }
|
unsafe { Self { fd, _phantom: PhantomData } }
|
||||||
|
@ -235,7 +235,7 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
// Safety: `OwnedFd` and `BorrowedFd` have the same validity
|
// Safety: `OwnedFd` and `BorrowedFd` have the same validity
|
||||||
// invariants, and the `BorrowdFd` is bounded by the lifetime
|
// invariants, and the `BorrowdFd` is bounded by the lifetime
|
||||||
// of `&self`.
|
// of `&self`.
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(self.as_raw_fd()) }
|
unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
library/std/src/os/fd/tests.rs
Normal file
34
library/std/src/os/fd/tests.rs
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#[cfg(any(unix, target_os = "wasi"))]
|
||||||
|
#[test]
|
||||||
|
fn test_raw_fd() {
|
||||||
|
#[cfg(unix)]
|
||||||
|
use crate::os::unix::io::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
|
||||||
|
#[cfg(target_os = "wasi")]
|
||||||
|
use crate::os::wasi::io::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
|
||||||
|
|
||||||
|
let raw_fd: RawFd = crate::io::stdin().as_raw_fd();
|
||||||
|
|
||||||
|
let stdin_as_file = unsafe { crate::fs::File::from_raw_fd(raw_fd) };
|
||||||
|
assert_eq!(stdin_as_file.as_raw_fd(), raw_fd);
|
||||||
|
assert_eq!(unsafe { BorrowedFd::borrow_raw(raw_fd).as_raw_fd() }, raw_fd);
|
||||||
|
assert_eq!(stdin_as_file.into_raw_fd(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(unix, target_os = "wasi"))]
|
||||||
|
#[test]
|
||||||
|
fn test_fd() {
|
||||||
|
#[cfg(unix)]
|
||||||
|
use crate::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
|
||||||
|
#[cfg(target_os = "wasi")]
|
||||||
|
use crate::os::wasi::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
|
||||||
|
|
||||||
|
let stdin = crate::io::stdin();
|
||||||
|
let fd: BorrowedFd<'_> = stdin.as_fd();
|
||||||
|
let raw_fd: RawFd = fd.as_raw_fd();
|
||||||
|
let owned_fd: OwnedFd = unsafe { OwnedFd::from_raw_fd(raw_fd) };
|
||||||
|
|
||||||
|
let stdin_as_file = crate::fs::File::from(owned_fd);
|
||||||
|
|
||||||
|
assert_eq!(stdin_as_file.as_fd().as_raw_fd(), raw_fd);
|
||||||
|
assert_eq!(Into::<OwnedFd>::into(stdin_as_file).into_raw_fd(), raw_fd);
|
||||||
|
}
|
|
@ -135,7 +135,7 @@ impl BorrowedHandle<'_> {
|
||||||
/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
|
/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
|
||||||
#[inline]
|
#[inline]
|
||||||
#[unstable(feature = "io_safety", issue = "87074")]
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
pub unsafe fn borrow_raw_handle(handle: RawHandle) -> Self {
|
pub unsafe fn borrow_raw(handle: RawHandle) -> Self {
|
||||||
Self { handle, _phantom: PhantomData }
|
Self { handle, _phantom: PhantomData }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -349,7 +349,7 @@ fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
// Safety: `OwnedHandle` and `BorrowedHandle` have the same validity
|
// Safety: `OwnedHandle` and `BorrowedHandle` have the same validity
|
||||||
// invariants, and the `BorrowdHandle` is bounded by the lifetime
|
// invariants, and the `BorrowdHandle` is bounded by the lifetime
|
||||||
// of `&self`.
|
// of `&self`.
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,49 +377,49 @@ fn from(owned: OwnedHandle) -> Self {
|
||||||
impl AsHandle for crate::io::Stdin {
|
impl AsHandle for crate::io::Stdin {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> AsHandle for crate::io::StdinLock<'a> {
|
impl<'a> AsHandle for crate::io::StdinLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsHandle for crate::io::Stdout {
|
impl AsHandle for crate::io::Stdout {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> AsHandle for crate::io::StdoutLock<'a> {
|
impl<'a> AsHandle for crate::io::StdoutLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsHandle for crate::io::Stderr {
|
impl AsHandle for crate::io::Stderr {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> AsHandle for crate::io::StderrLock<'a> {
|
impl<'a> AsHandle for crate::io::StderrLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsHandle for crate::process::ChildStdin {
|
impl AsHandle for crate::process::ChildStdin {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,7 +433,7 @@ fn from(child_stdin: crate::process::ChildStdin) -> OwnedHandle {
|
||||||
impl AsHandle for crate::process::ChildStdout {
|
impl AsHandle for crate::process::ChildStdout {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ fn from(child_stdout: crate::process::ChildStdout) -> OwnedHandle {
|
||||||
impl AsHandle for crate::process::ChildStderr {
|
impl AsHandle for crate::process::ChildStderr {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -461,7 +461,7 @@ fn from(child_stderr: crate::process::ChildStderr) -> OwnedHandle {
|
||||||
impl<T> AsHandle for crate::thread::JoinHandle<T> {
|
impl<T> AsHandle for crate::thread::JoinHandle<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_handle(&self) -> BorrowedHandle<'_> {
|
fn as_handle(&self) -> BorrowedHandle<'_> {
|
||||||
unsafe { BorrowedHandle::borrow_raw_handle(self.as_raw_handle()) }
|
unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ impl BorrowedSocket<'_> {
|
||||||
/// `INVALID_SOCKET`.
|
/// `INVALID_SOCKET`.
|
||||||
#[inline]
|
#[inline]
|
||||||
#[unstable(feature = "io_safety", issue = "87074")]
|
#[unstable(feature = "io_safety", issue = "87074")]
|
||||||
pub unsafe fn borrow_raw_socket(socket: RawSocket) -> Self {
|
pub unsafe fn borrow_raw(socket: RawSocket) -> Self {
|
||||||
debug_assert_ne!(socket, c::INVALID_SOCKET as RawSocket);
|
debug_assert_ne!(socket, c::INVALID_SOCKET as RawSocket);
|
||||||
Self { socket, _phantom: PhantomData }
|
Self { socket, _phantom: PhantomData }
|
||||||
}
|
}
|
||||||
|
@ -243,14 +243,14 @@ fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||||
// Safety: `OwnedSocket` and `BorrowedSocket` have the same validity
|
// Safety: `OwnedSocket` and `BorrowedSocket` have the same validity
|
||||||
// invariants, and the `BorrowdSocket` is bounded by the lifetime
|
// invariants, and the `BorrowdSocket` is bounded by the lifetime
|
||||||
// of `&self`.
|
// of `&self`.
|
||||||
unsafe { BorrowedSocket::borrow_raw_socket(self.as_raw_socket()) }
|
unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsSocket for crate::net::TcpStream {
|
impl AsSocket for crate::net::TcpStream {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||||
unsafe { BorrowedSocket::borrow_raw_socket(self.as_raw_socket()) }
|
unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@ fn from(owned: OwnedSocket) -> Self {
|
||||||
impl AsSocket for crate::net::TcpListener {
|
impl AsSocket for crate::net::TcpListener {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||||
unsafe { BorrowedSocket::borrow_raw_socket(self.as_raw_socket()) }
|
unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +292,7 @@ fn from(owned: OwnedSocket) -> Self {
|
||||||
impl AsSocket for crate::net::UdpSocket {
|
impl AsSocket for crate::net::UdpSocket {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_socket(&self) -> BorrowedSocket<'_> {
|
fn as_socket(&self) -> BorrowedSocket<'_> {
|
||||||
unsafe { BorrowedSocket::borrow_raw_socket(self.as_raw_socket()) }
|
unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ pub fn panic_output() -> Option<impl io::Write> {
|
||||||
impl AsFd for io::Stdin {
|
impl AsFd for io::Stdin {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDIN_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDIN_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
impl<'a> AsFd for io::StdinLock<'a> {
|
impl<'a> AsFd for io::StdinLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDIN_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDIN_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
impl AsFd for io::Stdout {
|
impl AsFd for io::Stdout {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDOUT_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDOUT_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
impl<'a> AsFd for io::StdoutLock<'a> {
|
impl<'a> AsFd for io::StdoutLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDOUT_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDOUT_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
impl AsFd for io::Stderr {
|
impl AsFd for io::Stderr {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDERR_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDERR_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +136,6 @@ fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
impl<'a> AsFd for io::StderrLock<'a> {
|
impl<'a> AsFd for io::StderrLock<'a> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_fd(&self) -> BorrowedFd<'_> {
|
fn as_fd(&self) -> BorrowedFd<'_> {
|
||||||
unsafe { BorrowedFd::borrow_raw_fd(libc::STDERR_FILENO) }
|
unsafe { BorrowedFd::borrow_raw(libc::STDERR_FILENO) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue