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
+9-12
Original file line number
Diff line number
Diff line change
@@ -483,18 +483,15 @@ assert_eq!(values[1], 3);
483
483
`*const T` / `*mut T` can be cast to `*const U` / `*mut U` with the following behavior:
484
484
485
485
- If `T` and `U` are both sized, the pointer is returned unchanged.
486
-
- If `T` and `U` are both unsized, the pointer is also returned unchanged. In particular,
487
-
the metadata is preserved exactly.
488
-
489
-
For instance, a cast from `*const [T]` to `*const [U]` preserves the number of elements.
490
-
Note that, as a consequence, such casts do not necessarily preserve the size of the
491
-
pointer's referent (e.g., casting `*const [u16]` to `*const [u8]` will result in a raw
492
-
pointer which refers to an object of half the size of the original). The same
493
-
holds for `str` and any compound type whose unsized tail is a slice type, such
494
-
as `struct Foo(i32, [u8])` or `(u64, Foo)`.
495
-
- If `T` is unsized and `U` is sized, the cast discards all metadata that
496
-
completes the wide pointer `T` and produces a thin pointer `U` consisting
497
-
of the data part of the unsized pointer.
486
+
- If `T` and `U` are both unsized, the pointer is also returned unchanged.
487
+
In particular, the metadata is preserved exactly.
488
+
489
+
For instance, a cast from `*const [T]` to `*const [U]` preserves the number of elements.
490
+
Note that, as a consequence, such casts do not necessarily preserve the size of the pointer's referent
491
+
(e.g., casting `*const [u16]` to `*const [u8]` will result in a raw pointer which refers to an object of half the size of the original).
492
+
The same holds for `str` and any compound type whose unsized tail is a slice type,
493
+
such as `struct Foo(i32, [u8])` or `(u64, Foo)`.
494
+
- If `T` is unsized and `U` is sized, the cast discards all metadata that completes the wide pointer `T` and produces a thin pointer `U` consisting of the data part of the unsized pointer.
0 commit comments