Skip to content
Merged
Changes from all commits
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
8 changes: 8 additions & 0 deletions reference/src/layout/pointers.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ and are at least one word.

The layouts of `&T`, `&mut T` and `*T` are the same.

If `T` is sized, references and pointers to `T` have a size and alignment of one
word and have therefore the same layout as C pointers.

> **warning**: while the layout of references and pointers is compatible with
> the layout of C pointers, references come with a _validity_ invariant that
> does not allow them to be used when they could be `NULL`, unaligned, dangling,
> or, in the case of `&mut T`, aliasing.

We do not make any guarantees about the layout of
multi-trait objects `&(dyn T + U)` or references to other dynamically sized types,
other than that they are at least word-aligned, and have size at least one word.
Expand Down