1
Fork 0

Use &raw in the standard library

Since the stabilization in #127679 has reached stage0, 1.82-beta, we can
start using `&raw` freely, and even the soft-deprecated `ptr::addr_of!`
and `ptr::addr_of_mut!` can stop allowing the unstable feature.

I intentionally did not change any documentation or tests, but the rest
of those macro uses are all now using `&raw const` or `&raw mut` in the
standard library.
This commit is contained in:
Josh Stone 2024-09-25 17:03:20 -07:00
parent 0399709cdc
commit f4d9d1a0ea
51 changed files with 150 additions and 185 deletions

View file

@ -98,7 +98,7 @@ impl SocketAddr {
unsafe {
let mut addr: libc::sockaddr_un = mem::zeroed();
let mut len = mem::size_of::<libc::sockaddr_un>() as libc::socklen_t;
cvt(f(core::ptr::addr_of_mut!(addr) as *mut _, &mut len))?;
cvt(f((&raw mut addr) as *mut _, &mut len))?;
SocketAddr::from_parts(addr, len)
}
}

View file

@ -37,7 +37,7 @@ pub(super) fn recv_vectored_with_ancillary_from(
unsafe {
let mut msg_name: libc::sockaddr_un = zeroed();
let mut msg: libc::msghdr = zeroed();
msg.msg_name = core::ptr::addr_of_mut!(msg_name) as *mut _;
msg.msg_name = (&raw mut msg_name) as *mut _;
msg.msg_namelen = size_of::<libc::sockaddr_un>() as libc::socklen_t;
msg.msg_iov = bufs.as_mut_ptr().cast();
msg.msg_iovlen = bufs.len() as _;
@ -70,7 +70,7 @@ pub(super) fn send_vectored_with_ancillary_to(
if let Some(path) = path { sockaddr_un(path)? } else { (zeroed(), 0) };
let mut msg: libc::msghdr = zeroed();
msg.msg_name = core::ptr::addr_of_mut!(msg_name) as *mut _;
msg.msg_name = (&raw mut msg_name) as *mut _;
msg.msg_namelen = msg_namelen;
msg.msg_iov = bufs.as_ptr() as *mut _;
msg.msg_iovlen = bufs.len() as _;

View file

@ -100,7 +100,7 @@ impl UnixDatagram {
let socket = UnixDatagram::unbound()?;
let (addr, len) = sockaddr_un(path.as_ref())?;
cvt(libc::bind(socket.as_raw_fd(), core::ptr::addr_of!(addr) as *const _, len as _))?;
cvt(libc::bind(socket.as_raw_fd(), (&raw const addr) as *const _, len as _))?;
Ok(socket)
}
@ -133,7 +133,7 @@ impl UnixDatagram {
let socket = UnixDatagram::unbound()?;
cvt(libc::bind(
socket.as_raw_fd(),
core::ptr::addr_of!(socket_addr.addr) as *const _,
(&raw const socket_addr.addr) as *const _,
socket_addr.len as _,
))?;
Ok(socket)
@ -215,7 +215,7 @@ impl UnixDatagram {
unsafe {
let (addr, len) = sockaddr_un(path.as_ref())?;
cvt(libc::connect(self.as_raw_fd(), core::ptr::addr_of!(addr) as *const _, len))?;
cvt(libc::connect(self.as_raw_fd(), (&raw const addr) as *const _, len))?;
}
Ok(())
}
@ -247,7 +247,7 @@ impl UnixDatagram {
unsafe {
cvt(libc::connect(
self.as_raw_fd(),
core::ptr::addr_of!(socket_addr.addr) as *const _,
(&raw const socket_addr.addr) as *const _,
socket_addr.len,
))?;
}
@ -514,7 +514,7 @@ impl UnixDatagram {
buf.as_ptr() as *const _,
buf.len(),
MSG_NOSIGNAL,
core::ptr::addr_of!(addr) as *const _,
(&raw const addr) as *const _,
len,
))?;
Ok(count as usize)
@ -549,7 +549,7 @@ impl UnixDatagram {
buf.as_ptr() as *const _,
buf.len(),
MSG_NOSIGNAL,
core::ptr::addr_of!(socket_addr.addr) as *const _,
(&raw const socket_addr.addr) as *const _,
socket_addr.len,
))?;
Ok(count as usize)

View file

@ -103,11 +103,7 @@ impl UnixListener {
)))]
const backlog: libc::c_int = libc::SOMAXCONN;
cvt(libc::bind(
inner.as_inner().as_raw_fd(),
core::ptr::addr_of!(addr) as *const _,
len as _,
))?;
cvt(libc::bind(inner.as_inner().as_raw_fd(), (&raw const addr) as *const _, len as _))?;
cvt(libc::listen(inner.as_inner().as_raw_fd(), backlog))?;
Ok(UnixListener(inner))
@ -147,7 +143,7 @@ impl UnixListener {
const backlog: core::ffi::c_int = 128;
cvt(libc::bind(
inner.as_raw_fd(),
core::ptr::addr_of!(socket_addr.addr) as *const _,
(&raw const socket_addr.addr) as *const _,
socket_addr.len as _,
))?;
cvt(libc::listen(inner.as_raw_fd(), backlog))?;
@ -182,7 +178,7 @@ impl UnixListener {
pub fn accept(&self) -> io::Result<(UnixStream, SocketAddr)> {
let mut storage: libc::sockaddr_un = unsafe { mem::zeroed() };
let mut len = mem::size_of_val(&storage) as libc::socklen_t;
let sock = self.0.accept(core::ptr::addr_of_mut!(storage) as *mut _, &mut len)?;
let sock = self.0.accept((&raw mut storage) as *mut _, &mut len)?;
let addr = SocketAddr::from_parts(storage, len)?;
Ok((UnixStream(sock), addr))
}

View file

@ -84,7 +84,7 @@ impl UnixStream {
let inner = Socket::new_raw(libc::AF_UNIX, libc::SOCK_STREAM)?;
let (addr, len) = sockaddr_un(path.as_ref())?;
cvt(libc::connect(inner.as_raw_fd(), core::ptr::addr_of!(addr) as *const _, len))?;
cvt(libc::connect(inner.as_raw_fd(), (&raw const addr) as *const _, len))?;
Ok(UnixStream(inner))
}
}
@ -118,7 +118,7 @@ impl UnixStream {
let inner = Socket::new_raw(libc::AF_UNIX, libc::SOCK_STREAM)?;
cvt(libc::connect(
inner.as_raw_fd(),
core::ptr::addr_of!(socket_addr.addr) as *const _,
(&raw const socket_addr.addr) as *const _,
socket_addr.len,
))?;
Ok(UnixStream(inner))

View file

@ -60,7 +60,7 @@ mod impl_linux {
socket.as_raw_fd(),
SOL_SOCKET,
SO_PEERCRED,
core::ptr::addr_of_mut!(ucred) as *mut c_void,
(&raw mut ucred) as *mut c_void,
&mut ucred_size,
);
@ -121,7 +121,7 @@ mod impl_apple {
socket.as_raw_fd(),
SOL_LOCAL,
LOCAL_PEERPID,
core::ptr::addr_of_mut!(pid) as *mut c_void,
(&raw mut pid) as *mut c_void,
&mut pid_size,
);