Update E0517 message to reflect RFC 2195.
This commit is contained in:
parent
8d0066922b
commit
7869400e58
@ -25,14 +25,17 @@ impl Foo {
|
||||
These attributes do not work on typedefs, since typedefs are just aliases.
|
||||
|
||||
Representations like `#[repr(u8)]`, `#[repr(i64)]` are for selecting the
|
||||
discriminant size for enums with no data fields on any of the variants, e.g.
|
||||
`enum Color {Red, Blue, Green}`, effectively setting the size of the enum to
|
||||
the size of the provided type. Such an enum can be cast to a value of the same
|
||||
type as well. In short, `#[repr(u8)]` makes the enum behave like an integer
|
||||
with a constrained set of allowed values.
|
||||
discriminant size for enums. For enums with no data fields on any of the
|
||||
variants, e.g. `enum Color {Red, Blue, Green}`, this effectively sets the size
|
||||
of the enum to the size of the provided type. Such an enum can be cast to a
|
||||
value of the same type as well. In short, `#[repr(u8)]` makes a field-less enum
|
||||
behave like an integer with a constrained set of allowed values.
|
||||
|
||||
Only field-less enums can be cast to numerical primitives, so this attribute
|
||||
will not apply to structs.
|
||||
For a description of how `#[repr(C)]` and representations like `#[repr(u8)]`
|
||||
affect the layout of enums with data fields, see [RFC 2195][rfc2195].
|
||||
|
||||
Only field-less enums can be cast to numerical primitives. Representations like
|
||||
`#[repr(u8)]` will not apply to structs.
|
||||
|
||||
`#[repr(packed)]` reduces padding to make the struct size smaller. The
|
||||
representation of enums isn't strictly defined in Rust, and this attribute
|
||||
@ -42,3 +45,5 @@ won't work on enums.
|
||||
types (i.e., `u8`, `i32`, etc) a representation that permits vectorization via
|
||||
SIMD. This doesn't make much sense for enums since they don't consist of a
|
||||
single list of data.
|
||||
|
||||
[rfc2195]: https://github.com/rust-lang/rfcs/blob/master/text/2195-really-tagged-unions.md
|
||||
|
Loading…
Reference in New Issue
Block a user