A struct
type is a heterogeneous product of other types, called the
fields of the type.1
New instances of a struct
can be constructed with a struct expression.
The memory layout of a struct
is undefined by default to allow for compiler
optimizations like field reordering, but it can be fixed with the
#[repr(...)]
attribute. In either case, fields may be given in any order in a
corresponding struct expression; the resulting struct
value will always
have the same memory layout.
The fields of a struct
may be qualified by visibility modifiers, to allow
access to data in a struct outside a module.
A tuple struct type is just like a struct type, except that the fields are anonymous.
A unit-like struct type is like a struct type, except that it has no fields. The one value constructed by the associated struct expression is the only value that inhabits such a type.
Footnotes
-
struct
types are analogous tostruct
types in C, the record types of the ML family, or the struct types of the Lisp family. ↩