Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update operator-expr.md
  • Loading branch information
joshlf authored Oct 26, 2023
commit b3217718e448ad8d3f084b590ece460d1f6d139e
15 changes: 9 additions & 6 deletions src/expressions/operator-expr.md
Original file line number Diff line number Diff line change
Expand Up @@ -480,12 +480,15 @@ assert_eq!(values[1], 3);

#### Slice DST pointer to pointer cast

For slice types like `[T]` and `[U]`, the raw pointer types `*const [T]`, `*mut [T]`, `*const [U]`, and `*mut [U]`
encode the number of elements in this slice. Casts between these raw pointer types
preserve the number of elements. Note that, as a consequence, such casts do *not*
necessarily preserve the size of the pointer's referent (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).
For slice types like `[T]` and `[U]`, the raw pointer types `*const [T]`, `*mut [T]`,
`*const [U]`, and `*mut [U]` encode the number of elements in this slice. Casts between
these raw pointer types preserve the number of elements. Note that, as a consequence,
such casts do *not* necessarily preserve the size of the pointer's referent (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). The same holds for `str` and any compound type
whose unsized tail is a slice type, such as struct `Foo(i32, [u8])` or `(u64, Foo)`.



## Assignment expressions

Expand Down