Skip to content

Commit

Permalink
Clarify that 0 is a valid multiple of a type's alignment
Browse files Browse the repository at this point in the history
The reference currently states that "[t]he size of a value is always a multiple of its alignment." This might be taken to imply that a type's size is greater than or equal to its alignment. This commit clarifies that 0 is a valid multiple; zero-sized types have 0 size and nonzero alignment.
  • Loading branch information
joshlf authored Sep 4, 2022
1 parent f62e93c commit 33cc59a
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/type-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ The alignment of a value can be checked with the [`align_of_val`] function.

The *size* of a value is the offset in bytes between successive elements in an
array with that item type including alignment padding. The size of a value is
always a multiple of its alignment. The size of a value can be checked with the
[`size_of_val`] function.
always a multiple of its alignment. Note that some types are zero-sized; 0 is
considered a multiple of any alignment (for example, on some platforms, the type
`[u16; 0]` has size 0 and alignment 2). The size of a value can be checked with
the [`size_of_val`] function.

Types where all values have the same size and alignment, and both are known at
compile time, implement the [`Sized`] trait and can be checked with the
Expand Down

0 comments on commit 33cc59a

Please sign in to comment.