@@ -787,7 +787,7 @@ impl<T, A: Allocator> Rc<T, A> {
787787
788788 let strong = unsafe {
789789 let inner = init_ptr. as_ptr ( ) ;
790- ptr:: write ( ptr :: addr_of_mut! ( ( * inner) . value) , data) ;
790+ ptr:: write ( & raw mut ( * inner) . value , data) ;
791791
792792 let prev_value = ( * inner) . strong . get ( ) ;
793793 debug_assert_eq ! ( prev_value, 0 , "No prior strong references should exist" ) ;
@@ -1442,7 +1442,7 @@ impl<T: ?Sized, A: Allocator> Rc<T, A> {
14421442 // SAFETY: This cannot go through Deref::deref or Rc::inner because
14431443 // this is required to retain raw/mut provenance such that e.g. `get_mut` can
14441444 // write through the pointer after the Rc is recovered through `from_raw`.
1445- unsafe { ptr :: addr_of_mut! ( ( * ptr) . value) }
1445+ unsafe { & raw mut ( * ptr) . value }
14461446 }
14471447
14481448 /// Constructs an `Rc<T, A>` from a raw pointer in the provided allocator.
@@ -2042,8 +2042,8 @@ impl<T: ?Sized> Rc<T> {
20422042 unsafe {
20432043 debug_assert_eq ! ( Layout :: for_value_raw( inner) , layout) ;
20442044
2045- ptr :: addr_of_mut! ( ( * inner) . strong) . write ( Cell :: new ( 1 ) ) ;
2046- ptr :: addr_of_mut! ( ( * inner) . weak) . write ( Cell :: new ( 1 ) ) ;
2045+ ( & raw mut ( * inner) . strong ) . write ( Cell :: new ( 1 ) ) ;
2046+ ( & raw mut ( * inner) . weak ) . write ( Cell :: new ( 1 ) ) ;
20472047 }
20482048
20492049 Ok ( inner)
@@ -2072,8 +2072,8 @@ impl<T: ?Sized, A: Allocator> Rc<T, A> {
20722072
20732073 // Copy value as bytes
20742074 ptr:: copy_nonoverlapping (
2075- core :: ptr :: addr_of! ( * src) as * const u8 ,
2076- ptr :: addr_of_mut! ( ( * ptr) . value) as * mut u8 ,
2075+ ( & raw const * src) as * const u8 ,
2076+ ( & raw mut ( * ptr) . value ) as * mut u8 ,
20772077 value_size,
20782078 ) ;
20792079
@@ -2107,11 +2107,7 @@ impl<T> Rc<[T]> {
21072107 unsafe fn copy_from_slice ( v : & [ T ] ) -> Rc < [ T ] > {
21082108 unsafe {
21092109 let ptr = Self :: allocate_for_slice ( v. len ( ) ) ;
2110- ptr:: copy_nonoverlapping (
2111- v. as_ptr ( ) ,
2112- ptr:: addr_of_mut!( ( * ptr) . value) as * mut T ,
2113- v. len ( ) ,
2114- ) ;
2110+ ptr:: copy_nonoverlapping ( v. as_ptr ( ) , ( & raw mut ( * ptr) . value ) as * mut T , v. len ( ) ) ;
21152111 Self :: from_ptr ( ptr)
21162112 }
21172113 }
@@ -2149,7 +2145,7 @@ impl<T> Rc<[T]> {
21492145 let layout = Layout :: for_value_raw ( ptr) ;
21502146
21512147 // Pointer to first element
2152- let elems = ptr :: addr_of_mut! ( ( * ptr) . value) as * mut T ;
2148+ let elems = ( & raw mut ( * ptr) . value ) as * mut T ;
21532149
21542150 let mut guard = Guard { mem : NonNull :: new_unchecked ( mem) , elems, layout, n_elems : 0 } ;
21552151
@@ -2577,7 +2573,7 @@ impl<T: ?Sized + fmt::Debug, A: Allocator> fmt::Debug for Rc<T, A> {
25772573#[ stable( feature = "rust1" , since = "1.0.0" ) ]
25782574impl < T : ?Sized , A : Allocator > fmt:: Pointer for Rc < T , A > {
25792575 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
2580- fmt:: Pointer :: fmt ( & core :: ptr :: addr_of! ( * * self ) , f)
2576+ fmt:: Pointer :: fmt ( & ( & raw const * * self ) , f)
25812577 }
25822578}
25832579
@@ -2718,7 +2714,7 @@ impl<T, A: Allocator> From<Vec<T, A>> for Rc<[T], A> {
27182714 let ( vec_ptr, len, cap, alloc) = v. into_raw_parts_with_alloc ( ) ;
27192715
27202716 let rc_ptr = Self :: allocate_for_slice_in ( len, & alloc) ;
2721- ptr:: copy_nonoverlapping ( vec_ptr, ptr :: addr_of_mut! ( ( * rc_ptr) . value) as * mut T , len) ;
2717+ ptr:: copy_nonoverlapping ( vec_ptr, ( & raw mut ( * rc_ptr) . value ) as * mut T , len) ;
27222718
27232719 // Create a `Vec<T, &A>` with length 0, to deallocate the buffer
27242720 // without dropping its contents or the allocator
@@ -3084,7 +3080,7 @@ impl<T: ?Sized, A: Allocator> Weak<T, A> {
30843080 // SAFETY: if is_dangling returns false, then the pointer is dereferenceable.
30853081 // The payload may be dropped at this point, and we have to maintain provenance,
30863082 // so use raw pointer manipulation.
3087- unsafe { ptr :: addr_of_mut! ( ( * ptr) . value) }
3083+ unsafe { & raw mut ( * ptr) . value }
30883084 }
30893085 }
30903086
0 commit comments