Struct types
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.
../struct
types are analogous to struct
types in C, the
record types of the ML family, or the struct types of the Lisp family.