A pair of alignments, ABI-mandated and preferred.
An identifier that specifies the address space that some operation
should operate on. Special address spaces have an effect on code generation,
depending on the target and the address spaces it implements.
Alignment of a type in bytes (always a power of two).
The source-order index of a field in a variant.
Error from the homogeneous_aggregate
test function, indicating
there are distinct leaf fields passed in different ways,
or this is uninhabited.
Encodes extra information we have about a pointer.
Note that this information is advisory only, and backends are free to ignore it:
if the information is wrong, that can cause UB, but if the information is absent,
that must always be okay.
Represents the repr options provided by the user.
Size of a type in bytes.
Parsed
Data layout
for a target, which contains everything needed to compute layouts.
The layout of a type, alongside the type itself.
Provides various type traversal APIs (e.g., recursing into fields).
The source-order index of a variant in a type.
Inclusive wrap-around range of valid values, that is, if
start > end, it represents start..=MAX
, followed by 0..=end
.