@@ -134,7 +134,7 @@ to compute the address of array index `idx`. This relies on
134
134
how arrays are laid out in memory.
135
135
* For a struct, however, in general we do not know how it is laid out, and we
136
136
also cannot use ` &mut base_ptr.field ` as that would be creating a
137
- reference. So, you must carefully use the [ ` addr_of_mut ` ] macro . This creates
137
+ reference. So, you must carefully use the [ raw reference ] [ raw_reference ] syntax . This creates
138
138
a raw pointer to the field without creating an intermediate reference:
139
139
140
140
``` rust
@@ -147,7 +147,7 @@ struct Demo {
147
147
let mut uninit = MaybeUninit :: <Demo >:: uninit ();
148
148
// `&uninit.as_mut().field` would create a reference to an uninitialized `bool`,
149
149
// and thus be Undefined Behavior!
150
- let f1_ptr = unsafe { ptr :: addr_of_mut! (( * uninit . as_mut_ptr ()). field) };
150
+ let f1_ptr = unsafe { & raw mut ( * uninit . as_mut_ptr ()). field };
151
151
unsafe { f1_ptr . write (true ); }
152
152
153
153
let init = unsafe { uninit . assume_init () };
@@ -167,7 +167,7 @@ it around at all, be sure to be *really* careful.
167
167
[ `MaybeUninit` ] : ../core/mem/union.MaybeUninit.html
168
168
[ assume_init ] : ../core/mem/union.MaybeUninit.html#method.assume_init
169
169
[ `ptr` ] : ../core/ptr/index.html
170
- [ `addr_of_mut` ] : ../core/ptr/macro.addr_of_mut. html
170
+ [ raw_reference ] : ../reference/types/pointer. html#r-type.pointer.raw.constructor
171
171
[ `write` ] : ../core/ptr/fn.write.html
172
172
[ `copy` ] : ../std/ptr/fn.copy.html
173
173
[ `copy_nonoverlapping` ] : ../std/ptr/fn.copy_nonoverlapping.html
0 commit comments