Enum witnext::Type [−][src]
pub enum Type { Record(RecordDatatype), Variant(Variant), Handle(HandleDatatype), List(TypeRef), Pointer(TypeRef), ConstPointer(TypeRef), Buffer(Buffer), Builtin(BuiltinType), }
Expand description
Structure of all possible interface types.
Note that this is intended to match the interface types proposal itself.
Currently this is relatively close to that with just a few *.witx
extensions for now.
Variants
Record(RecordDatatype)
A structure with named field.
Variant(Variant)
An enumeration where a value is one of a number of variants.
Handle(HandleDatatype)
A “handle” which is an un-forgeable reference. Today this is an i32
where a module can’t forge and use integers it was not already given
access to.
List(TypeRef)
A list of a type, stored in linear memory.
Note that lists of char
are specialized to indicate strings.
Pointer(TypeRef)
A witx
-specific type representing a raw mutable pointer into linear
memory
ConstPointer(TypeRef)
A witx
-specific type representing a raw const pointer into linear
memory
Buffer(Buffer)
A buffer type representing a window in memory
Builtin(BuiltinType)
A builtin base-case type.
Implementations
Returns whether the in-memory representation of this type will always be valid regardless of the value of all the bits in memory.
This is only true for numerical types, pointers, and records of these values. This is used for canonical lifting/lowering of lists.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Type
impl !UnwindSafe for Type
Blanket Implementations
Mutably borrows from an owned value. Read more