Clarify niche optimization on enums with reprs

A repr on an enum with fields suppresses the optimization, but a repr on
a fieldless enum does not.
pull/315/head
Josh Triplett 4 years ago
parent 2747c4bb2c
commit 6ec2b6b827

@ -91,7 +91,7 @@ manipulate its tag and fields. See [the RFC][really-tagged] for details.
These `repr`s have no effect on a struct.
Adding an explicit `repr(u*)`, `repr(i*)`, or `repr(C)` to an enum suppresses the null-pointer optimization, like:
Adding an explicit `repr(u*)`, `repr(i*)`, or `repr(C)` to an enum with fields suppresses the null-pointer optimization, like:
```rust
# use std::mem::size_of;
@ -110,6 +110,8 @@ assert_eq!(8, size_of::<MyOption<&u16>>());
assert_eq!(16, size_of::<MyReprOption<&u16>>());
```
This optimization still applies to fieldless enums with an explicit `repr(u*)`, `repr(i*)`, or `repr(C)`.
## repr(packed)
`repr(packed)` forces Rust to strip any padding, and only align the type to a

Loading…
Cancel
Save