Skip to content

Commit ff187a9

Browse files
committed
library: use addr_of!
1 parent 8f359be commit ff187a9

35 files changed

Lines changed: 83 additions & 74 deletions

File tree

‎library/alloc/src/boxed/thin.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ impl<T: ?Sized> ThinBox<T> {
176176

177177
fnwith_header(&self) -> &WithHeader<<TasPointee>::Metadata>{
178178
// SAFETY: both types are transparent to `NonNull<u8>`
179-
unsafe{&*((&self.ptr)as*constWithOpaqueHeaderas*constWithHeader<_>)}
179+
unsafe{&*(core::ptr::addr_of!(self.ptr)as*constWithHeader<_>)}
180180
}
181181
}
182182

‎library/alloc/src/rc.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,7 +1969,7 @@ impl<T: ?Sized, A: Allocator> Rc<T, A> {
19691969

19701970
// Copy value as bytes
19711971
ptr::copy_nonoverlapping(
1972-
&*srcas*constTas*constu8,
1972+
core::ptr::addr_of!(*src)as*constu8,
19731973
ptr::addr_of_mut!((*ptr).value)as*mutu8,
19741974
value_size,
19751975
);
@@ -2440,7 +2440,7 @@ impl<T: ?Sized + fmt::Debug, A: Allocator> fmt::Debug for Rc<T, A> {
24402440
#[stable(feature = "rust1", since = "1.0.0")]
24412441
impl<T: ?Sized,A:Allocator> fmt::PointerforRc<T,A>{
24422442
fnfmt(&self,f:&mut fmt::Formatter<'_>) -> fmt::Result{
2443-
fmt::Pointer::fmt(&(&**selfas*constT), f)
2443+
fmt::Pointer::fmt(&core::ptr::addr_of!(**self), f)
24442444
}
24452445
}
24462446

‎library/alloc/src/sync.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1914,7 +1914,7 @@ impl<T: ?Sized, A: Allocator> Arc<T, A> {
19141914

19151915
// Copy value as bytes
19161916
ptr::copy_nonoverlapping(
1917-
&*srcas*constTas*constu8,
1917+
core::ptr::addr_of!(*src)as*constu8,
19181918
ptr::addr_of_mut!((*ptr).data)as*mutu8,
19191919
value_size,
19201920
);
@@ -3265,7 +3265,7 @@ impl<T: ?Sized + fmt::Debug, A: Allocator> fmt::Debug for Arc<T, A> {
32653265
#[stable(feature = "rust1", since = "1.0.0")]
32663266
impl<T: ?Sized,A:Allocator> fmt::PointerforArc<T,A>{
32673267
fnfmt(&self,f:&mut fmt::Formatter<'_>) -> fmt::Result{
3268-
fmt::Pointer::fmt(&(&**selfas*constT), f)
3268+
fmt::Pointer::fmt(&core::ptr::addr_of!(**self), f)
32693269
}
32703270
}
32713271

‎library/core/src/ffi/c_str.rs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::ffi::c_char;
44
usecrate::fmt;
55
usecrate::intrinsics;
66
usecrate::ops;
7+
usecrate::ptr::addr_of;
78
usecrate::slice;
89
usecrate::slice::memchr;
910
usecrate::str;
@@ -603,7 +604,7 @@ impl CStr {
603604
pubconstfnto_bytes_with_nul(&self) -> &[u8]{
604605
// SAFETY: Transmuting a slice of `c_char`s to a slice of `u8`s
605606
// is safe on all supported targets.
606-
unsafe{&*(&self.inneras*const[c_char]as*const[u8])}
607+
unsafe{&*(addr_of!(self.inner)as*const[u8])}
607608
}
608609

609610
/// Yields a <code>&[str]</code> slice if the `CStr` contains valid UTF-8.

‎library/core/src/iter/adapters/filter_map.rs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::iter::{adapters::SourceIter, FusedIterator, InPlaceIterable, TrustedF
22
usecrate::mem::{ManuallyDrop,MaybeUninit};
33
usecrate::num::NonZero;
44
usecrate::ops::{ControlFlow,Try};
5+
usecrate::ptr::addr_of;
56
usecrate::{array, fmt};
67

78
/// An iterator that uses `f` to both filter and map elements from `iter`.
@@ -98,9 +99,8 @@ where
9899
// SAFETY: Loop conditions ensure the index is in bounds.
99100

100101
unsafe{
101-
let opt_payload_at:*constMaybeUninit<B> = (&val as*constOption<B>)
102-
.byte_add(core::mem::offset_of!(Option<B>,Some.0))
103-
.cast();
102+
let opt_payload_at:*constMaybeUninit<B> =
103+
addr_of!(val).byte_add(core::mem::offset_of!(Option<B>,Some.0)).cast();
104104
let dst = guard.array.as_mut_ptr().add(idx);
105105
crate::ptr::copy_nonoverlapping(opt_payload_at, dst,1);
106106
crate::mem::forget(val);

‎library/core/src/ptr/mod.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1553,7 +1553,7 @@ pub const unsafe fn write_unaligned<T>(dst: *mut T, src: T) {
15531553
// `dst` cannot overlap `src` because the caller has mutable access
15541554
// to `dst` while `src` is owned by this function.
15551555
unsafe{
1556-
copy_nonoverlapping(&srcas*constTas*constu8, dst as*mutu8, mem::size_of::<T>());
1556+
copy_nonoverlapping(addr_of!(src)as*constu8, dst as*mutu8, mem::size_of::<T>());
15571557
// We are calling the intrinsic directly to avoid function calls in the generated code.
15581558
intrinsics::forget(src);
15591559
}

‎library/std/src/os/unix/net/addr.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ mod libc {
2121
fnsun_path_offset(addr:&libc::sockaddr_un) -> usize{
2222
// Work with an actual instance of the type since using a null pointer is UB
2323
let base = (addr as*const libc::sockaddr_un).addr();
24-
let path = (&addr.sun_pathas*const libc::c_char).addr();
24+
let path = core::ptr::addr_of!(addr.sun_path).addr();
2525
path - base
2626
}
2727

@@ -98,7 +98,7 @@ impl SocketAddr {
9898
unsafe{
9999
letmut addr: libc::sockaddr_un = mem::zeroed();
100100
letmut len = mem::size_of::<libc::sockaddr_un>()as libc::socklen_t;
101-
cvt(f(&mutaddras*mut_as*mut_,&mut len))?;
101+
cvt(f(core::ptr::addr_of_mut!(addr)as*mut_,&mut len))?;
102102
SocketAddr::from_parts(addr, len)
103103
}
104104
}

‎library/std/src/os/unix/net/ancillary.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub(super) fn recv_vectored_with_ancillary_from(
3737
unsafe{
3838
letmut msg_name: libc::sockaddr_un = zeroed();
3939
letmut msg: libc::msghdr = zeroed();
40-
msg.msg_name = &mutmsg_nameas*mut_as*mut_;
40+
msg.msg_name = core::ptr::addr_of_mut!(msg_name)as*mut_;
4141
msg.msg_namelen = size_of::<libc::sockaddr_un>()as libc::socklen_t;
4242
msg.msg_iov = bufs.as_mut_ptr().cast();
4343
msg.msg_iovlen = bufs.len()as_;
@@ -70,7 +70,7 @@ pub(super) fn send_vectored_with_ancillary_to(
7070
ifletSome(path) = path {sockaddr_un(path)? }else{(zeroed(),0)};
7171

7272
letmut msg: libc::msghdr = zeroed();
73-
msg.msg_name = &mutmsg_nameas*mut_as*mut_;
73+
msg.msg_name = core::ptr::addr_of_mut!(msg_name)as*mut_;
7474
msg.msg_namelen = msg_namelen;
7575
msg.msg_iov = bufs.as_ptr()as*mut_;
7676
msg.msg_iovlen = bufs.len()as_;

‎library/std/src/os/unix/net/datagram.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl UnixDatagram {
9191
let socket = UnixDatagram::unbound()?;
9292
let(addr, len) = sockaddr_un(path.as_ref())?;
9393

94-
cvt(libc::bind(socket.as_raw_fd(),&addras*const_as*const_, len as_))?;
94+
cvt(libc::bind(socket.as_raw_fd(),core::ptr::addr_of!(addr)as*const_, len as_))?;
9595

9696
Ok(socket)
9797
}
@@ -124,7 +124,7 @@ impl UnixDatagram {
124124
let socket = UnixDatagram::unbound()?;
125125
cvt(libc::bind(
126126
socket.as_raw_fd(),
127-
&socket_addr.addras*const_as*const_,
127+
core::ptr::addr_of!(socket_addr.addr)as*const_,
128128
socket_addr.lenas_,
129129
))?;
130130
Ok(socket)
@@ -206,7 +206,7 @@ impl UnixDatagram {
206206
unsafe{
207207
let(addr, len) = sockaddr_un(path.as_ref())?;
208208

209-
cvt(libc::connect(self.as_raw_fd(),&addras*const_as*const_, len))?;
209+
cvt(libc::connect(self.as_raw_fd(),core::ptr::addr_of!(addr)as*const_, len))?;
210210
}
211211
Ok(())
212212
}
@@ -238,7 +238,7 @@ impl UnixDatagram {
238238
unsafe{
239239
cvt(libc::connect(
240240
self.as_raw_fd(),
241-
&socket_addr.addras*const_as*const_,
241+
core::ptr::addr_of!(socket_addr.addr)as*const_,
242242
socket_addr.len,
243243
))?;
244244
}
@@ -505,7 +505,7 @@ impl UnixDatagram {
505505
buf.as_ptr()as*const_,
506506
buf.len(),
507507
MSG_NOSIGNAL,
508-
&addras*const_as*const_,
508+
core::ptr::addr_of!(addr)as*const_,
509509
len,
510510
))?;
511511
Ok(count asusize)
@@ -540,7 +540,7 @@ impl UnixDatagram {
540540
buf.as_ptr()as*const_,
541541
buf.len(),
542542
MSG_NOSIGNAL,
543-
&socket_addr.addras*const_as*const_,
543+
core::ptr::addr_of!(socket_addr.addr)as*const_,
544544
socket_addr.len,
545545
))?;
546546
Ok(count asusize)

‎library/std/src/os/unix/net/listener.rs‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,11 @@ impl UnixListener {
9999
)))]
100100
const backlog: libc::c_int = libc::SOMAXCONN;
101101

102-
cvt(libc::bind(inner.as_inner().as_raw_fd(),&addr as*const_as*const_, len as_))?;
102+
cvt(libc::bind(
103+
inner.as_inner().as_raw_fd(),
104+
core::ptr::addr_of!(addr)as*const_,
105+
len as_,
106+
))?;
103107
cvt(libc::listen(inner.as_inner().as_raw_fd(), backlog))?;
104108

105109
Ok(UnixListener(inner))
@@ -139,7 +143,7 @@ impl UnixListener {
139143
const backlog: libc::c_int = 128;
140144
cvt(libc::bind(
141145
inner.as_raw_fd(),
142-
&socket_addr.addras*const_as*const_,
146+
core::ptr::addr_of!(socket_addr.addr)as*const_,
143147
socket_addr.lenas_,
144148
))?;
145149
cvt(libc::listen(inner.as_raw_fd(), backlog))?;
@@ -174,7 +178,7 @@ impl UnixListener {
174178
pubfnaccept(&self) -> io::Result<(UnixStream,SocketAddr)>{
175179
letmut storage: libc::sockaddr_un = unsafe{ mem::zeroed()};
176180
letmut len = mem::size_of_val(&storage)as libc::socklen_t;
177-
let sock = self.0.accept(&mutstorageas*mut_as*mut_,&mut len)?;
181+
let sock = self.0.accept(core::ptr::addr_of_mut!(storage)as*mut_,&mut len)?;
178182
let addr = SocketAddr::from_parts(storage, len)?;
179183
Ok((UnixStream(sock), addr))
180184
}

0 commit comments

Comments
 (0)