You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/expressions/operator-expr.md
+6-2Lines changed: 6 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -361,9 +361,11 @@ Here `*T` means either `*const T` or `*mut T`.
361
361
*`u8` to `char` cast
362
362
* Casts to the `char` with the corresponding code point.
363
363
* Pointer to address cast
364
-
* Casting from a valid raw pointer to `usize` will produce a numeric address representing the pointer.
364
+
* Casting from a valid raw pointer to `usize` will produce the address that is pointed to. Note that the pointer's provenance is lost in this conversion.
365
365
* Address to pointer cast
366
-
* Casting from `usize` to a raw pointer will produce a pointer with the same value as the original pointer if the `usize` was obtained through a pointer to address cast of a valid pointer of the same type.
366
+
* Casting from `usize` to a raw pointer will produce a raw pointer to the same location as the original pointer, if the `usize` was obtained through a pointer to address cast of a valid pointer.
367
+
368
+
Note that the two pointers are not equivalent. Dereferencing the pointer obtained from the address to pointer cast may be [undefined behavior] if aliasing rules are not followed.
367
369
368
370
\* if integer-to-float casts with this rounding mode and overflow behavior are
369
371
not supported natively by the hardware, these casts will likely be slower than
@@ -377,6 +379,8 @@ expected.
377
379
number, preferring the one with an even least significant digit if exactly
0 commit comments