From b772088501cea50b1f25a61d5e27c8d033f3171b Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Sun, 6 Sep 2026 00:32:03 +0100 Subject: [PATCH 1/2] ci: add web-sys pin --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 31fdb8ed4..21df08597 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -54,6 +54,7 @@ jobs: cargo update --package=half --precise=2.2.1 cargo update --package=flate2 --precise=1.0.35 cargo update --package=serde --precise=1.0.228 + cargo update --package=web-sys --precise=0.3.104 cargo update --package=syn --precise=2.0.106 cargo update --package=textwrap --precise=0.16.1 cargo update --package=parking_lot --precise=0.12.4 @@ -596,6 +597,7 @@ jobs: cargo update --package=half --precise=2.2.1 cargo update --package=flate2 --precise=1.0.35 cargo update --package=serde --precise=1.0.228 + cargo update --package=web-sys --precise=0.3.104 cargo update --package=syn --precise=2.0.106 cargo update --package=textwrap --precise=0.16.1 cargo update --package=parking_lot --precise=0.12.4 From 2d0a857513b43f246554800c15cce022772e983d Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Sun, 6 Sep 2026 00:05:36 +0100 Subject: [PATCH 2/2] avoid unnecessary type annotations for `.cast()` --- src/backend/libc/event/syscalls.rs | 6 +-- src/backend/libc/fs/syscalls.rs | 51 ++++++++-------------- src/backend/libc/io/syscalls.rs | 12 ++--- src/backend/libc/net/addr.rs | 4 +- src/backend/libc/net/read_sockaddr.rs | 6 +-- src/backend/libc/net/syscalls.rs | 14 +++--- src/backend/libc/pipe/syscalls.rs | 9 ++-- src/backend/libc/pipe/types.rs | 4 +- src/backend/libc/thread/syscalls.rs | 8 +--- src/backend/libc/time/types.rs | 4 +- src/backend/linux_raw/net/addr.rs | 6 +-- src/backend/linux_raw/net/netdevice.rs | 8 ++-- src/backend/linux_raw/net/read_sockaddr.rs | 4 +- src/backend/linux_raw/net/syscalls.rs | 2 +- src/backend/linux_raw/param/init.rs | 8 ++-- src/backend/linux_raw/pipe/types.rs | 4 +- src/backend/linux_raw/vdso.rs | 5 +-- src/buffer.rs | 6 +-- src/io_uring/bindgen_types.rs | 4 +- src/io_uring/mod.rs | 4 +- src/ioctl/patterns.rs | 2 +- src/net/send_recv/msg.rs | 9 ++-- src/path/arg.rs | 4 +- src/timespec.rs | 4 +- tests/io_uring/register.rs | 8 ++-- tests/mm/mlock.rs | 14 +++--- 26 files changed, 90 insertions(+), 120 deletions(-) diff --git a/src/backend/libc/event/syscalls.rs b/src/backend/libc/event/syscalls.rs index 3827a2f99..4af61cbcd 100644 --- a/src/backend/libc/event/syscalls.rs +++ b/src/backend/libc/event/syscalls.rs @@ -580,7 +580,7 @@ pub(crate) unsafe fn epoll_wait( if let Some(epoll_pwait2_func) = epoll_pwait2.get() { return ret_u32(epoll_pwait2_func( borrowed_fd(epoll), - events.0.cast::(), + events.0.cast(), events.1.try_into().unwrap_or(i32::MAX), crate::utils::option_as_ptr(timeout).cast(), null(), @@ -604,7 +604,7 @@ pub(crate) unsafe fn epoll_wait( ret_u32(epoll_pwait2( borrowed_fd(epoll), - events.0.cast::(), + events.0.cast(), events.1.try_into().unwrap_or(i32::MAX), crate::utils::option_as_ptr(timeout).cast(), null(), @@ -622,7 +622,7 @@ pub(crate) unsafe fn epoll_wait( ret_u32(c::epoll_wait( borrowed_fd(epoll), - events.0.cast::(), + events.0.cast(), events.1.try_into().unwrap_or(i32::MAX), timeout, )) diff --git a/src/backend/libc/fs/syscalls.rs b/src/backend/libc/fs/syscalls.rs index 8b7f082f5..a4bb1fb6e 100644 --- a/src/backend/libc/fs/syscalls.rs +++ b/src/backend/libc/fs/syscalls.rs @@ -327,7 +327,7 @@ pub(crate) fn getdents_uninit( unsafe { ret_usize(getdents64( borrowed_fd(fd), - buf.as_mut_ptr().cast::(), + buf.as_mut_ptr().cast(), buf.len(), )) } @@ -2377,7 +2377,7 @@ pub(crate) unsafe fn getxattr( ret_usize(c::getxattr( path.as_ptr(), name.as_ptr(), - value.0.cast::(), + value.0.cast(), value.1, )) } @@ -2389,7 +2389,7 @@ pub(crate) unsafe fn getxattr( let ptr = if value.1 == 0 { core::ptr::null_mut() } else { - value.0.cast::() + value.0.cast() }; ret_usize(c::getxattr( path.as_ptr(), @@ -2413,7 +2413,7 @@ pub(crate) unsafe fn lgetxattr( ret_usize(c::lgetxattr( path.as_ptr(), name.as_ptr(), - value.0.cast::(), + value.0.cast(), value.1, )) } @@ -2425,7 +2425,7 @@ pub(crate) unsafe fn lgetxattr( let ptr = if value.1 == 0 { core::ptr::null_mut() } else { - value.0.cast::() + value.0.cast() }; ret_usize(c::getxattr( @@ -2450,7 +2450,7 @@ pub(crate) unsafe fn fgetxattr( ret_usize(c::fgetxattr( borrowed_fd(fd), name.as_ptr(), - value.0.cast::(), + value.0.cast(), value.1, )) } @@ -2462,7 +2462,7 @@ pub(crate) unsafe fn fgetxattr( let ptr = if value.1 == 0 { core::ptr::null_mut() } else { - value.0.cast::() + value.0.cast() }; ret_usize(c::fgetxattr( borrowed_fd(fd), @@ -2487,7 +2487,7 @@ pub(crate) fn setxattr( ret(c::setxattr( path.as_ptr(), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), flags.bits() as i32, )) @@ -2498,7 +2498,7 @@ pub(crate) fn setxattr( ret(c::setxattr( path.as_ptr(), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), 0, flags.bits() as i32, @@ -2518,7 +2518,7 @@ pub(crate) fn lsetxattr( ret(c::lsetxattr( path.as_ptr(), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), flags.bits() as i32, )) @@ -2529,7 +2529,7 @@ pub(crate) fn lsetxattr( ret(c::setxattr( path.as_ptr(), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), 0, flags.bits() as i32 | c::XATTR_NOFOLLOW, @@ -2549,7 +2549,7 @@ pub(crate) fn fsetxattr( ret(c::fsetxattr( borrowed_fd(fd), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), flags.bits() as i32, )) @@ -2560,7 +2560,7 @@ pub(crate) fn fsetxattr( ret(c::fsetxattr( borrowed_fd(fd), name.as_ptr(), - value.as_ptr().cast::(), + value.as_ptr().cast(), value.len(), 0, flags.bits() as i32, @@ -2572,21 +2572,12 @@ pub(crate) fn fsetxattr( pub(crate) unsafe fn listxattr(path: &CStr, list: (*mut u8, usize)) -> io::Result { #[cfg(not(apple))] { - ret_usize(c::listxattr( - path.as_ptr(), - list.0.cast::(), - list.1, - )) + ret_usize(c::listxattr(path.as_ptr(), list.0.cast(), list.1)) } #[cfg(apple)] { - ret_usize(c::listxattr( - path.as_ptr(), - list.0.cast::(), - list.1, - 0, - )) + ret_usize(c::listxattr(path.as_ptr(), list.0.cast(), list.1, 0)) } } @@ -2594,18 +2585,14 @@ pub(crate) unsafe fn listxattr(path: &CStr, list: (*mut u8, usize)) -> io::Resul pub(crate) unsafe fn llistxattr(path: &CStr, list: (*mut u8, usize)) -> io::Result { #[cfg(not(apple))] { - ret_usize(c::llistxattr( - path.as_ptr(), - list.0.cast::(), - list.1, - )) + ret_usize(c::llistxattr(path.as_ptr(), list.0.cast(), list.1)) } #[cfg(apple)] { ret_usize(c::listxattr( path.as_ptr(), - list.0.cast::(), + list.0.cast(), list.1, c::XATTR_NOFOLLOW, )) @@ -2618,12 +2605,12 @@ pub(crate) unsafe fn flistxattr(fd: BorrowedFd<'_>, list: (*mut u8, usize)) -> i #[cfg(not(apple))] { - ret_usize(c::flistxattr(fd, list.0.cast::(), list.1)) + ret_usize(c::flistxattr(fd, list.0.cast(), list.1)) } #[cfg(apple)] { - ret_usize(c::flistxattr(fd, list.0.cast::(), list.1, 0)) + ret_usize(c::flistxattr(fd, list.0.cast(), list.1, 0)) } } diff --git a/src/backend/libc/io/syscalls.rs b/src/backend/libc/io/syscalls.rs index d91e983c2..3993d5d67 100644 --- a/src/backend/libc/io/syscalls.rs +++ b/src/backend/libc/io/syscalls.rs @@ -75,7 +75,7 @@ pub(crate) fn readv(fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut<'_>]) -> io::Resu unsafe { ret_usize(c::readv( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, )) } @@ -86,7 +86,7 @@ pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>]) -> io::Result(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, )) } @@ -116,7 +116,7 @@ pub(crate) fn preadv( unsafe { ret_usize(c::preadv( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, offset, )) @@ -143,7 +143,7 @@ pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>], offset: u64) -> unsafe { ret_usize(c::pwritev( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, offset, )) @@ -162,7 +162,7 @@ pub(crate) fn preadv2( unsafe { ret_usize(c::preadv2( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, offset, bitflags_bits!(flags), @@ -182,7 +182,7 @@ pub(crate) fn pwritev2( unsafe { ret_usize(c::pwritev2( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV) as c::c_int, offset, bitflags_bits!(flags), diff --git a/src/backend/libc/net/addr.rs b/src/backend/libc/net/addr.rs index a9b55559c..d3ff0b3c7 100644 --- a/src/backend/libc/net/addr.rs +++ b/src/backend/libc/net/addr.rs @@ -321,7 +321,7 @@ impl SocketAddrStorage { // SAFETY: `self.0` is a `sockaddr_storage` so it has enough space. unsafe { AddressFamily::from_raw(crate::backend::net::read_sockaddr::read_sa_family( - crate::utils::as_ptr(&self.0).cast::(), + crate::utils::as_ptr(&self.0).cast(), )) } } @@ -332,7 +332,7 @@ impl SocketAddrStorage { // SAFETY: `self.0` is a `sockaddr_storage` so it has enough space. unsafe { crate::backend::net::read_sockaddr::initialize_family_to_unspec( - crate::utils::as_mut_ptr(&mut self.0).cast::(), + crate::utils::as_mut_ptr(&mut self.0).cast(), ) } } diff --git a/src/backend/libc/net/read_sockaddr.rs b/src/backend/libc/net/read_sockaddr.rs index 5f8c48ec7..5962aa499 100644 --- a/src/backend/libc/net/read_sockaddr.rs +++ b/src/backend/libc/net/read_sockaddr.rs @@ -122,7 +122,7 @@ pub(crate) unsafe fn sockaddr_nonempty(storage: *const c::sockaddr, len: SocketA } assert!(len as usize >= size_of::()); - let family: c::c_int = read_sa_family(storage.cast::()).into(); + let family: c::c_int = read_sa_family(storage.cast()).into(); if family == c::AF_UNSPEC { return false; } @@ -240,7 +240,7 @@ pub(crate) fn read_sockaddr_xdp(addr: &SocketAddrAny) -> Result= size_of::()); - let decode = unsafe { &*addr.as_ptr().cast::() }; + let decode: &c::sockaddr_xdp = unsafe { &*addr.as_ptr().cast() }; // This ignores the `sxdp_shared_umem_fd` field, which is only expected to // be significant in `bind` calls, and not returned from `acceptfrom` or @@ -259,6 +259,6 @@ pub(crate) fn read_sockaddr_netlink(addr: &SocketAddrAny) -> Result= size_of::()); - let decode = unsafe { &*addr.as_ptr().cast::() }; + let decode: &c::sockaddr_nl = unsafe { &*addr.as_ptr().cast() }; Ok(SocketAddrNetlink::new(decode.nl_pid, decode.nl_groups)) } diff --git a/src/backend/libc/net/syscalls.rs b/src/backend/libc/net/syscalls.rs index e9138143d..ed16f860d 100644 --- a/src/backend/libc/net/syscalls.rs +++ b/src/backend/libc/net/syscalls.rs @@ -64,14 +64,14 @@ pub(crate) unsafe fn recvfrom( // `recvfrom` does not write to the storage if the socket is // connection-oriented sockets, so we initialize the family field to // `AF_UNSPEC` so that we can detect this case. - initialize_family_to_unspec(addr.storage.as_mut_ptr().cast::()); + initialize_family_to_unspec(addr.storage.as_mut_ptr().cast()); let nread = ret_send_recv(c::recvfrom( borrowed_fd(fd), buf.0.cast(), send_recv_len(buf.1), bitflags_bits!(flags), - addr.storage.as_mut_ptr().cast::(), + addr.storage.as_mut_ptr().cast(), &mut addr.len, ))?; @@ -309,7 +309,7 @@ pub(crate) fn acceptfrom(sockfd: BorrowedFd<'_>) -> io::Result<(OwnedFd, Option< let mut addr = SocketAddrBuf::new(); let owned_fd = ret_owned_fd(c::accept( borrowed_fd(sockfd), - addr.storage.as_mut_ptr().cast::(), + addr.storage.as_mut_ptr().cast(), &mut addr.len, ))?; Ok((owned_fd, addr.into_any_option())) @@ -335,7 +335,7 @@ pub(crate) fn acceptfrom_with( let mut addr = SocketAddrBuf::new(); let owned_fd = ret_owned_fd(c::accept4( borrowed_fd(sockfd), - addr.storage.as_mut_ptr().cast::(), + addr.storage.as_mut_ptr().cast(), &mut addr.len, flags.bits() as c::c_int, ))?; @@ -389,7 +389,7 @@ pub(crate) fn getsockname(sockfd: BorrowedFd<'_>) -> io::Result { let mut addr = SocketAddrBuf::new(); ret(c::getsockname( borrowed_fd(sockfd), - addr.storage.as_mut_ptr().cast::(), + addr.storage.as_mut_ptr().cast(), &mut addr.len, ))?; Ok(addr.into_any()) @@ -401,7 +401,7 @@ pub(crate) fn getpeername(sockfd: BorrowedFd<'_>) -> io::Result(), + addr.storage.as_mut_ptr().cast(), &mut addr.len, ))?; Ok(addr.into_any_option()) @@ -425,7 +425,7 @@ pub(crate) fn socketpair( c::c_int::from(domain.0), (type_.0 | flags.bits()) as c::c_int, raw_protocol as c::c_int, - fds.as_mut_ptr().cast::(), + fds.as_mut_ptr().cast(), ))?; let [fd0, fd1] = fds.assume_init(); diff --git a/src/backend/libc/pipe/syscalls.rs b/src/backend/libc/pipe/syscalls.rs index fe5249546..43e99ec67 100644 --- a/src/backend/libc/pipe/syscalls.rs +++ b/src/backend/libc/pipe/syscalls.rs @@ -26,7 +26,7 @@ use { pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { unsafe { let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(c::pipe(result.as_mut_ptr().cast::()))?; + ret(c::pipe(result.as_mut_ptr().cast()))?; let [p0, p1] = result.assume_init(); Ok((p0, p1)) } @@ -44,10 +44,7 @@ pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { unsafe { let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(c::pipe2( - result.as_mut_ptr().cast::(), - bitflags_bits!(flags), - ))?; + ret(c::pipe2(result.as_mut_ptr().cast(), bitflags_bits!(flags)))?; let [p0, p1] = result.assume_init(); Ok((p0, p1)) } @@ -87,7 +84,7 @@ pub(crate) unsafe fn vmsplice( ) -> io::Result { ret_usize(c::vmsplice( borrowed_fd(fd), - bufs.as_ptr().cast::(), + bufs.as_ptr().cast(), min(bufs.len(), MAX_IOV), flags.bits(), )) diff --git a/src/backend/libc/pipe/types.rs b/src/backend/libc/pipe/types.rs index 38e255169..f3d4d27b9 100644 --- a/src/backend/libc/pipe/types.rs +++ b/src/backend/libc/pipe/types.rs @@ -82,7 +82,7 @@ impl<'a> IoSliceRaw<'a> { pub fn from_slice(buf: &'a [u8]) -> Self { IoSliceRaw { _buf: c::iovec { - iov_base: (buf.as_ptr() as *mut u8).cast::(), + iov_base: (buf.as_ptr() as *mut u8).cast(), iov_len: buf.len() as _, }, _lifetime: PhantomData, @@ -93,7 +93,7 @@ impl<'a> IoSliceRaw<'a> { pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { IoSliceRaw { _buf: c::iovec { - iov_base: buf.as_mut_ptr().cast::(), + iov_base: buf.as_mut_ptr().cast(), iov_len: buf.len() as _, }, _lifetime: PhantomData, diff --git a/src/backend/libc/thread/syscalls.rs b/src/backend/libc/thread/syscalls.rs index 84356fee4..9c1bc9c97 100644 --- a/src/backend/libc/thread/syscalls.rs +++ b/src/backend/libc/thread/syscalls.rs @@ -360,13 +360,7 @@ pub(crate) fn capget( ) via SYS_capget -> c::c_int } - unsafe { - ret(capget( - as_mut_ptr(header), - data.as_mut_ptr() - .cast::(), - )) - } + unsafe { ret(capget(as_mut_ptr(header), data.as_mut_ptr().cast())) } } #[cfg(linux_kernel)] diff --git a/src/backend/libc/time/types.rs b/src/backend/libc/time/types.rs index 35173abce..b6c50ca82 100644 --- a/src/backend/libc/time/types.rs +++ b/src/backend/libc/time/types.rs @@ -109,7 +109,7 @@ pub(crate) fn as_libc_itimerspec_ptr(itimerspec: &Itimerspec) -> *const c::itime { static_assertions::assert_eq_size!(Itimerspec, c::itimerspec); } - crate::utils::as_ptr(itimerspec).cast::() + crate::utils::as_ptr(itimerspec).cast() } #[cfg(any( @@ -127,7 +127,7 @@ pub(crate) fn as_libc_itimerspec_mut_ptr( { static_assertions::assert_eq_size!(Itimerspec, c::itimerspec); } - itimerspec.as_mut_ptr().cast::() + itimerspec.as_mut_ptr().cast() } #[cfg(any( diff --git a/src/backend/linux_raw/net/addr.rs b/src/backend/linux_raw/net/addr.rs index 501ca29a1..5b8854474 100644 --- a/src/backend/linux_raw/net/addr.rs +++ b/src/backend/linux_raw/net/addr.rs @@ -57,7 +57,7 @@ impl SocketAddrUnix { let id = &mut unix.sun_path[1..]; // SAFETY: Convert `&mut [c_char]` to `&mut [u8]`. - let id = unsafe { slice::from_raw_parts_mut(id.as_mut_ptr().cast::(), id.len()) }; + let id = unsafe { slice::from_raw_parts_mut(id.as_mut_ptr().cast(), id.len()) }; if let Some(id) = id.get_mut(..name.len()) { id.copy_from_slice(name); @@ -275,7 +275,7 @@ impl SocketAddrStorage { // SAFETY: `self.0` is a `sockaddr_storage` so it has enough space. unsafe { AddressFamily::from_raw(crate::backend::net::read_sockaddr::read_sa_family( - crate::utils::as_ptr(&self.0).cast::(), + crate::utils::as_ptr(&self.0).cast(), )) } } @@ -286,7 +286,7 @@ impl SocketAddrStorage { // SAFETY: `self.0` is a `sockaddr_storage` so it has enough space. unsafe { crate::backend::net::read_sockaddr::initialize_family_to_unspec( - crate::utils::as_mut_ptr(&mut self.0).cast::(), + crate::utils::as_mut_ptr(&mut self.0).cast(), ) } } diff --git a/src/backend/linux_raw/net/netdevice.rs b/src/backend/linux_raw/net/netdevice.rs index 1736d9da8..728be644c 100644 --- a/src/backend/linux_raw/net/netdevice.rs +++ b/src/backend/linux_raw/net/netdevice.rs @@ -7,7 +7,6 @@ use crate::fd::BorrowedFd; use crate::io; use core::ptr::addr_of_mut; use core::{slice, str}; -use linux_raw_sys::ctypes::c_char; use linux_raw_sys::ioctl::{SIOCGIFINDEX, SIOCGIFNAME}; use linux_raw_sys::net::{ifreq, ifreq__bindgen_ty_1, ifreq__bindgen_ty_2, IFNAMSIZ}; @@ -21,9 +20,8 @@ pub(crate) fn name_to_index(fd: BorrowedFd<'_>, if_name: &str) -> io::Result(), if_name_bytes.len()) - }; + let if_name_bytes = + unsafe { slice::from_raw_parts(if_name_bytes.as_ptr().cast(), if_name_bytes.len()) }; let mut ifreq = ifreq { ifr_ifrn: ifreq__bindgen_ty_1 { ifrn_name: [0; 16] }, @@ -54,7 +52,7 @@ pub(crate) fn index_to_name(fd: BorrowedFd<'_>, index: u32) -> io::Result<(usize // SAFETY: Convert `&[c_char]` to `&[u8]`. let ifrn_name = - unsafe { slice::from_raw_parts(ifrn_name.as_ptr().cast::(), ifrn_name.len()) }; + unsafe { slice::from_raw_parts(ifrn_name.as_ptr().cast(), ifrn_name.len()) }; let mut name_buf = [0; 16]; name_buf[..ifrn_name.len()].copy_from_slice(ifrn_name); diff --git a/src/backend/linux_raw/net/read_sockaddr.rs b/src/backend/linux_raw/net/read_sockaddr.rs index f18cd4833..39455b94a 100644 --- a/src/backend/linux_raw/net/read_sockaddr.rs +++ b/src/backend/linux_raw/net/read_sockaddr.rs @@ -110,7 +110,7 @@ pub(crate) fn read_sockaddr_unix(addr: &SocketAddrAny) -> Result(), bytes.len()) }; + let bytes = unsafe { slice::from_raw_parts(bytes.as_ptr().cast(), bytes.len()) }; return SocketAddrUnix::new_abstract_name(bytes); } @@ -119,7 +119,7 @@ pub(crate) fn read_sockaddr_unix(addr: &SocketAddrAny) -> Result(), bytes.len()) }; + let bytes = unsafe { slice::from_raw_parts(bytes.as_ptr().cast(), bytes.len()) }; assert_eq!(decode.sun_path[len - 1 - offsetof_sun_path], 0); SocketAddrUnix::new(bytes) diff --git a/src/backend/linux_raw/net/syscalls.rs b/src/backend/linux_raw/net/syscalls.rs index 488e08f02..245d2d1ec 100644 --- a/src/backend/linux_raw/net/syscalls.rs +++ b/src/backend/linux_raw/net/syscalls.rs @@ -537,7 +537,7 @@ pub(crate) unsafe fn recvfrom( // `recvfrom` does not write to the storage if the socket is // connection-oriented sockets, so we initialize the family field to // `AF_UNSPEC` so that we can detect this case. - initialize_family_to_unspec(addr.storage.as_mut_ptr().cast::()); + initialize_family_to_unspec(addr.storage.as_mut_ptr().cast()); #[cfg(not(target_arch = "x86"))] let nread = ret_usize(syscall!( diff --git a/src/backend/linux_raw/param/init.rs b/src/backend/linux_raw/param/init.rs index dd58cf60b..79e0b0acd 100644 --- a/src/backend/linux_raw/param/init.rs +++ b/src/backend/linux_raw/param/init.rs @@ -151,13 +151,13 @@ unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) { AT_HWCAP => HWCAP.store(a_val as usize, Ordering::Relaxed), AT_HWCAP2 => HWCAP2.store(a_val as usize, Ordering::Relaxed), AT_MINSIGSTKSZ => MINSIGSTKSZ.store(a_val as usize, Ordering::Relaxed), - AT_EXECFN => EXECFN.store(a_val.cast::(), Ordering::Relaxed), - AT_SYSINFO_EHDR => SYSINFO_EHDR.store(a_val.cast::(), Ordering::Relaxed), + AT_EXECFN => EXECFN.store(a_val.cast(), Ordering::Relaxed), + AT_SYSINFO_EHDR => SYSINFO_EHDR.store(a_val.cast(), Ordering::Relaxed), #[cfg(feature = "runtime")] AT_SECURE => SECURE.store(a_val as usize != 0, Ordering::Relaxed), #[cfg(feature = "runtime")] - AT_PHDR => PHDR.store(a_val.cast::(), Ordering::Relaxed), + AT_PHDR => PHDR.store(a_val.cast(), Ordering::Relaxed), #[cfg(feature = "runtime")] AT_PHNUM => PHNUM.store(a_val as usize, Ordering::Relaxed), #[cfg(feature = "runtime")] @@ -165,7 +165,7 @@ unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) { #[cfg(feature = "runtime")] AT_ENTRY => ENTRY.store(a_val as usize, Ordering::Relaxed), #[cfg(feature = "runtime")] - AT_RANDOM => RANDOM.store(a_val.cast::<[u8; 16]>(), Ordering::Relaxed), + AT_RANDOM => RANDOM.store(a_val.cast(), Ordering::Relaxed), AT_NULL => break, _ => (), diff --git a/src/backend/linux_raw/pipe/types.rs b/src/backend/linux_raw/pipe/types.rs index ae1855626..3aabe96c1 100644 --- a/src/backend/linux_raw/pipe/types.rs +++ b/src/backend/linux_raw/pipe/types.rs @@ -65,7 +65,7 @@ impl<'a> IoSliceRaw<'a> { pub fn from_slice(buf: &'a [u8]) -> Self { IoSliceRaw { _buf: c::iovec { - iov_base: (buf.as_ptr() as *mut u8).cast::(), + iov_base: (buf.as_ptr() as *mut u8).cast(), iov_len: buf.len() as _, }, _lifetime: PhantomData, @@ -76,7 +76,7 @@ impl<'a> IoSliceRaw<'a> { pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { IoSliceRaw { _buf: c::iovec { - iov_base: buf.as_mut_ptr().cast::(), + iov_base: buf.as_mut_ptr().cast(), iov_len: buf.len() as _, }, _lifetime: PhantomData, diff --git a/src/backend/linux_raw/vdso.rs b/src/backend/linux_raw/vdso.rs index 4fa1d1ccf..4ff86a3d2 100644 --- a/src/backend/linux_raw/vdso.rs +++ b/src/backend/linux_raw/vdso.rs @@ -282,10 +282,7 @@ impl Vdso { return false; // No definition. } - def = def - .cast::() - .add((*def).vd_next as usize) - .cast::(); + def = def.cast::().add((*def).vd_next as usize).cast(); } // Now figure out whether it matches. diff --git a/src/buffer.rs b/src/buffer.rs index 3584c5b39..3bb586068 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -176,7 +176,7 @@ impl<'a, T> private::Sealed for &'a mut [MaybeUninit] { let (init, uninit) = self.split_at_mut(len); // SAFETY: The user asserts that the slice is now initialized. - let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast::(), init.len()); + let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast(), init.len()); (init, uninit) } @@ -195,7 +195,7 @@ impl<'a, T, const N: usize> private::Sealed for &'a mut [MaybeUninit; N] { let (init, uninit) = self.split_at_mut(len); // SAFETY: The user asserts that the slice is now initialized. - let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast::(), init.len()); + let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast(), init.len()); (init, uninit) } @@ -215,7 +215,7 @@ impl<'a, T> private::Sealed for &'a mut Vec> { let (init, uninit) = self.split_at_mut(len); // SAFETY: The user asserts that the slice is now initialized. - let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast::(), init.len()); + let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast(), init.len()); (init, uninit) } diff --git a/src/io_uring/bindgen_types.rs b/src/io_uring/bindgen_types.rs index c45aefb67..efb068d38 100644 --- a/src/io_uring/bindgen_types.rs +++ b/src/io_uring/bindgen_types.rs @@ -18,12 +18,12 @@ impl IncompleteArrayField { #[inline] pub fn as_ptr(&self) -> *const T { - as_ptr(self).cast::() + as_ptr(self).cast() } #[inline] pub fn as_mut_ptr(&mut self) -> *mut T { - as_mut_ptr(self).cast::() + as_mut_ptr(self).cast() } #[inline] diff --git a/src/io_uring/mod.rs b/src/io_uring/mod.rs index 00fde8df5..0e6c832c0 100644 --- a/src/io_uring/mod.rs +++ b/src/io_uring/mod.rs @@ -229,7 +229,7 @@ pub unsafe fn io_uring_enter_sigmask( to_submit, min_complete, flags, - option_as_ptr(sigmask).cast::(), + option_as_ptr(sigmask).cast(), size_of::(), ) } @@ -272,7 +272,7 @@ pub unsafe fn io_uring_enter_arg( to_submit, min_complete, flags, - option_as_ptr(arg).cast::(), + option_as_ptr(arg).cast(), size_of::(), ) } diff --git a/src/ioctl/patterns.rs b/src/ioctl/patterns.rs index a08aae74e..ff72006d9 100644 --- a/src/ioctl/patterns.rs +++ b/src/ioctl/patterns.rs @@ -153,7 +153,7 @@ unsafe impl Ioctl for Setter { } fn as_ptr(&mut self) -> *mut c::c_void { - addr_of_mut!(self.input).cast::() + addr_of_mut!(self.input).cast() } unsafe fn output_from_ptr(_: IoctlOutput, _: *mut c::c_void) -> Result { diff --git a/src/net/send_recv/msg.rs b/src/net/send_recv/msg.rs index 234e9933a..6dbdbd34d 100644 --- a/src/net/send_recv/msg.rs +++ b/src/net/send_recv/msg.rs @@ -300,20 +300,19 @@ impl<'buf, 'slice, 'fd> SendAncillaryBuffer<'buf, 'slice, 'fd> { match msg { SendAncillaryMessage::ScmRights(fds) => { let fds_bytes = - unsafe { slice::from_raw_parts(fds.as_ptr().cast::(), size_of_val(fds)) }; + unsafe { slice::from_raw_parts(fds.as_ptr().cast(), size_of_val(fds)) }; self.push_ancillary(fds_bytes, c::SOL_SOCKET as _, c::SCM_RIGHTS as _) } #[cfg(linux_kernel)] SendAncillaryMessage::ScmCredentials(ucred) => { - let ucred_bytes = unsafe { - slice::from_raw_parts(addr_of!(ucred).cast::(), size_of_val(&ucred)) - }; + let ucred_bytes = + unsafe { slice::from_raw_parts(addr_of!(ucred).cast(), size_of_val(&ucred)) }; self.push_ancillary(ucred_bytes, c::SOL_SOCKET as _, c::SCM_CREDENTIALS as _) } #[cfg(target_os = "linux")] SendAncillaryMessage::TxTime(tx_time) => { let tx_time_bytes = unsafe { - slice::from_raw_parts(addr_of!(tx_time).cast::(), size_of_val(&tx_time)) + slice::from_raw_parts(addr_of!(tx_time).cast(), size_of_val(&tx_time)) }; self.push_ancillary(tx_time_bytes, c::SOL_SOCKET as _, c::SO_TXTIME as _) } diff --git a/src/path/arg.rs b/src/path/arg.rs index 851d3a69b..594ff546b 100644 --- a/src/path/arg.rs +++ b/src/path/arg.rs @@ -963,7 +963,7 @@ where // Taken from // let mut buf = MaybeUninit::<[u8; SMALL_PATH_BUFFER_SIZE]>::uninit(); - let buf_ptr = buf.as_mut_ptr().cast::(); + let buf_ptr = buf.as_mut_ptr().cast(); // This helps test our safety condition below. debug_assert!(bytes.len() + 1 <= SMALL_PATH_BUFFER_SIZE); @@ -1024,7 +1024,7 @@ where // Taken from // let mut buf = MaybeUninit::<[u8; LARGE_PATH_BUFFER_SIZE]>::uninit(); - let buf_ptr = buf.as_mut_ptr().cast::(); + let buf_ptr = buf.as_mut_ptr().cast(); // This helps test our safety condition below. if bytes.len() + 1 > LARGE_PATH_BUFFER_SIZE { diff --git a/src/timespec.rs b/src/timespec.rs index 44721958f..0b1012ced 100644 --- a/src/timespec.rs +++ b/src/timespec.rs @@ -309,7 +309,7 @@ pub(crate) fn as_libc_timespec_ptr(timespec: &Timespec) -> *const c::timespec { { static_assertions::assert_eq_size!(Timespec, c::timespec); } - crate::utils::as_ptr(timespec).cast::() + crate::utils::as_ptr(timespec).cast() } #[cfg(not(fix_y2038))] @@ -320,7 +320,7 @@ pub(crate) fn as_libc_timespec_mut_ptr( { static_assertions::assert_eq_size!(Timespec, c::timespec); } - timespec.as_mut_ptr().cast::() + timespec.as_mut_ptr().cast() } #[cfg(not(fix_y2038))] diff --git a/tests/io_uring/register.rs b/tests/io_uring/register.rs index 02d6287aa..6e8e2f922 100644 --- a/tests/io_uring/register.rs +++ b/tests/io_uring/register.rs @@ -45,7 +45,7 @@ fn register_ring(fd: BorrowedFd<'_>) -> Result> { fd, false, IoringRegisterOp::RegisterRingFds, - (&mut update as *mut io_uring_rsrc_update).cast::(), + (&mut update as *mut io_uring_rsrc_update).cast(), 1, )?; @@ -65,7 +65,7 @@ where fd, true, IoringRegisterOp::UnregisterRingFds, - (&update as *const io_uring_rsrc_update as *mut io_uring_rsrc_update).cast::(), + (&update as *const io_uring_rsrc_update as *mut io_uring_rsrc_update).cast(), 1, )?; @@ -83,7 +83,7 @@ where fd, true, IoringRegisterOp::RegisterIowqMaxWorkers, - (&iowq_max_workers as *const [u32; 2] as *mut [u32; 2]).cast::(), + (&iowq_max_workers as *const [u32; 2] as *mut [u32; 2]).cast(), 2, )?; @@ -98,7 +98,7 @@ where fd, false, IoringRegisterOp::RegisterPbufRing, - (reg as *const io_uring_buf_reg as *mut io_uring_buf_reg).cast::(), + (reg as *const io_uring_buf_reg as *mut io_uring_buf_reg).cast(), 1, ) } diff --git a/tests/mm/mlock.rs b/tests/mm/mlock.rs index 6ca74d4d0..337bb4639 100644 --- a/tests/mm/mlock.rs +++ b/tests/mm/mlock.rs @@ -3,8 +3,6 @@ //! We can't easily test that it actually locks memory, but we can test that we //! can call it and either get success or a reasonable error message. -use std::ffi::c_void; - #[test] fn test_mlock() { let mut buf = vec![0_u8; 4096]; @@ -16,8 +14,8 @@ fn test_mlock() { let ptr = ((ptr as usize) & (-4096_isize) as usize) as *mut u8; unsafe { - match rustix::mm::mlock(ptr.cast::(), buf.len()) { - Ok(()) => rustix::mm::munlock(ptr.cast::(), buf.len()).unwrap(), + match rustix::mm::mlock(ptr.cast(), buf.len()) { + Ok(()) => rustix::mm::munlock(ptr.cast(), buf.len()).unwrap(), // Tests won't always have enough memory or permissions, and that's ok. Err(rustix::io::Errno::PERM | rustix::io::Errno::NOMEM) => {} // But they shouldn't fail otherwise. @@ -33,11 +31,11 @@ fn test_mlock_with() { unsafe { match rustix::mm::mlock_with( - buf.as_mut_ptr().cast::(), + buf.as_mut_ptr().cast(), buf.len(), rustix::mm::MlockFlags::empty(), ) { - Ok(()) => rustix::mm::munlock(buf.as_mut_ptr().cast::(), buf.len()).unwrap(), + Ok(()) => rustix::mm::munlock(buf.as_mut_ptr().cast(), buf.len()).unwrap(), // Tests won't always have enough memory or permissions, and that's ok. Err(rustix::io::Errno::PERM | rustix::io::Errno::NOMEM | rustix::io::Errno::NOSYS) => {} // But they shouldn't fail otherwise. @@ -67,11 +65,11 @@ fn test_mlock_with_onfault() { unsafe { match rustix::mm::mlock_with( - buf.as_mut_ptr().cast::(), + buf.as_mut_ptr().cast(), buf.len(), rustix::mm::MlockFlags::ONFAULT, ) { - Ok(()) => rustix::mm::munlock(buf.as_mut_ptr().cast::(), buf.len()).unwrap(), + Ok(()) => rustix::mm::munlock(buf.as_mut_ptr().cast(), buf.len()).unwrap(), // Tests won't always have enough memory or permissions, and that's ok. Err(rustix::io::Errno::PERM | rustix::io::Errno::NOMEM | rustix::io::Errno::NOSYS) => {} // But they shouldn't fail otherwise.