wasmer_interface_types/
types.rs

1//! This module defines the WIT types.
2
3use crate::vec1::Vec1;
4
5/// Represents the types supported by WIT.
6#[derive(PartialEq, Debug, Clone)]
7pub enum InterfaceType {
8    /// A 8-bits signed integer.
9    S8,
10
11    /// A 16-bits signed integer.
12    S16,
13
14    /// A 32-bits signed integer.
15    S32,
16
17    /// A 64-bits signed integer.
18    S64,
19
20    /// A 8-bits unsigned integer.
21    U8,
22
23    /// A 16-bits unsigned integer.
24    U16,
25
26    /// A 32-bits unsigned integer.
27    U32,
28
29    /// A 64-bits unsigned integer.
30    U64,
31
32    /// A 32-bits float.
33    F32,
34
35    /// A 64-bits float.
36    F64,
37
38    /// A string.
39    String,
40
41    /// An `any` reference.
42    Anyref,
43
44    /// A 32-bits integer (as defined in WebAssembly core).
45    I32,
46
47    /// A 64-bits integer (as defiend in WebAssembly core).
48    I64,
49
50    /// A record.
51    Record(RecordType),
52}
53
54/// Represents a record type.
55#[derive(PartialEq, Debug, Clone)]
56pub struct RecordType {
57    /// Types representing the fields.
58    /// A record must have at least one field, hence the
59    /// [`Vec1`][crate::vec1::Vec1].
60    pub fields: Vec1<InterfaceType>,
61}